Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.22;
Скачать: CL | DM;

Вниз

Как создать нестандартную форму???   Найти похожие ветки 

 
Arnold ©   (2004-08-09 16:41) [0]

Ну все сказано в subj.


 
Алхимик ©   (2004-08-09 16:50) [1]

Что есть "нестандартную"?
p.s. А давайте поиграем в телепатов...


 
DK   (2004-08-09 16:51) [2]

Visible:=false;

Более нестандартной не придумаешь.Подойдет?


 
VMcL ©   (2004-08-09 16:52) [3]

>>Arnold ©  (09.08.04 16:41)

Нестандартными средствами.


 
Kurtevich ©   (2004-08-09 16:54) [4]

Автор наверно хочет круглую :) как в каком-нибудь медиа-плейере


 
Iconka ©   (2004-08-09 16:56) [5]

А кто сказал что круг - это не стандарт? И где вообще эти стандарты для форм описанны?


 
Kurtevich ©   (2004-08-09 16:57) [6]


> Iconka ©   (09.08.04 16:56) [5]

эээ... forms.pas?... windows.pas?... ;)


 
Arnold ©   (2004-08-09 17:00) [7]

Да я имел ввиду форму нестандартной формы. Например, ну в виде звездочки =)


 
Алхимик ©   (2004-08-09 17:00) [8]


> [5] Iconka ©   (09.08.04 16:56)
> А кто сказал что круг - это не стандарт? И где вообще эти
> стандарты для форм описанны?


Ну вдруг ГОСТ и до форм добрался :)


 
Алхимик ©   (2004-08-09 17:04) [9]

http://forprogrammers.narod.ru/faqs/Okno_luboy_formi.html
или у яндекса спроси про
"создание окон произвольной формы"


 
Ega23 ©   (2004-08-09 17:04) [10]

Ну вдруг ГОСТ и до форм добрался :)

Кстати, вполне могут.


 
Кириешки ©   (2004-08-09 17:06) [11]

>Arnold ©   (09.08.04 17:00) [7]

Для этого используются регионы вообще то


 
wnew ©   (2004-08-09 17:06) [12]

http://www.wnew.de/RundeFenster.zip


 
DK   (2004-08-09 17:11) [13]

На тебе, в виде звездочки:

procedure TForm1.FormCreate(Sender: TObject);
var
       MR1, MR2: HRGN;
begin
     MR1 := CreateEllipticRgn(Width div 4, 0, 3 * Width div 4, Height);
     MR2 := CreateEllipticRgn(0, Height div 4, Width, 3 * Height div 4);
     CombineRgn(MR1, MR1, MR2, RGN_XOR);
     SetWindowRgn(Handle, MR1, true);
end;


 
Алхимик ©   (2004-08-09 17:23) [14]

Ха, звёздочка...
На тебе, в виде бабочки. :)

{ (c) George Chernilevsky }
procedure TForm1.FormCreate(Sender: TObject);
var
 R1, R2 : HRgn;
 P : array [0..2] of TPoint;
 X : Word;
begin
 // левое верхнее крыло
 R1 :=CreateEllipticRgn(Round(-Width*0.4),
 0,Round(Width*0.49),Round(Height*1.1));
 // правое верхнее крыло
 R2 :=CreateEllipticRgn(Round(Width*0.51),
 0,Round(Width*1.4),Round(Height*1.1));
 CombineRgn(R2,R1,R2,RGN_OR);
 // отсекаем лишнее от верхних крыльев,
 // остаются линзы на пересечении эллипсов
 R1 :=CreateEllipticRgn(0,Round(-Height*0.3),
 Width,Round(Height*0.71));
 CombineRgn(R1,R1,R2,RGN_AND);
 //эллипс - основа нижних крыльев
 R2 :=CreateEllipticRgn(Round(Width*0.1),
 Round(Height*0.65), Round(Width*0.9), Height);
 CombineRgn(R1,R1,R2,RGN_OR);
 // вырезаем эллипс - разрез между нижних крыльев
 R2 :=CreateEllipticRgn(Round(Width*0.3),
 Round(Height*0.7), Round(Width*0.7), Round(Height*1.5));
 CombineRgn(R1,R1,R2,RGN_DIFF);
 // вертикальный эллипс - туловище бабочки
 R2 :=CreateEllipticRgn(Round(Width*0.46),
 Round(Height*0.3), Round(Width*0.54),
 Round(Height*0.8));
 CombineRgn(R1,R1,R2,RGN_OR);
 // голова - круг; за основу берем меньшую
 // из двух величин - высоты и ширины окна
 X := Width;
 if Height < X then X := Height;
 X := Round(X/18);
 R2 :=CreateEllipticRgn(Round(Width*0.5)-X,
 Round(Height*0.3)-X, Round(Width*0.5)+X,
 Round(Height*0.3)+X);
 CombineRgn(R1,R1,R2,RGN_OR);
 // левый усик
 P[0] := Point(Round(Width*0.5), Round(Height*0.3));
 P[1] := Point(Round(Width*0.35), Round(Height*0.01));
 P[2] := Point(Round(Width*0.355)+1, 0);
 R2 := CreatePolygonRgn(P, 3, WINDING);
 CombineRgn(R1,R1,R2,RGN_OR);
 // правый усик
 P[0] := Point(Round(Width*0.5), Round(Height*0.3));
 P[1] := Point(Round(Width*0.655+1), Round(Height*0.01));
 P[2] := Point(Round(Width*0.65), 0);
 R2 := CreatePolygonRgn(P, 3, WINDING);
 CombineRgn(R1,R1,R2,RGN_OR);
 // острие на крыле слева снизу
 P[0] := Point(Round(Width*0.15), Height);
 P[1] := Point(Round(Width*0.2), Round(Height*0.8));
 P[2] := Point(Round(Width*0.3), Round(Height*0.9));
 R2 := CreatePolygonRgn(P, 3, WINDING);
 CombineRgn(R1,R1,R2,RGN_OR);
 // острие на крыле справа снизу
 P[0] := Point(Round(Width*0.85), Height);
 P[1] := Point(Round(Width*0.8), Round(Height*0.8));
 P[2] := Point(Round(Width*0.7), Round(Height*0.9));
 R2 := CreatePolygonRgn(P, 3, WINDING);
 CombineRgn(R1,R1,R2,RGN_OR);
 // Назначаем полученный регион форме
 SetWindowRgn(Handle, R1, True);
end;


 
DK   (2004-08-09 17:26) [15]

Алхимик ©   (09.08.04 17:23) [14]

Ваще круто!


 
Алхимик ©   (2004-08-09 17:30) [16]

[15] DK   (09.08.04 17:26)
"Как Windows превратить в illuminators – создание окон произвольной формы
средствами Windows API".
© Георгий Чернилевский



Страницы: 1 вся ветка

Текущий архив: 2004.08.22;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.054 c
1-1091863065
Миха
2004-08-07 11:17
2004.08.22
Открыть файл с CD-ROMa (read-only)


3-1090244437
Григорьев Антон
2004-07-19 17:40
2004.08.22
Как вызвать редактор ADOConnection.ConnectionString в run-time?


14-1091392264
Evgenius
2004-08-02 00:31
2004.08.22
Самарские программеры откликнитесь plz


3-1090922487
dimds
2004-07-27 14:01
2004.08.22
параметры типа битмап


1-1091655066
yozh_programmer
2004-08-05 01:31
2004.08.22
Компонент для отчета с диаграммой и сохр. в WORDформате