Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.058 c
1-1092049831
Relaxxx
2004-08-09 15:10
2004.08.22
Как мне выставить ширину колонки в Excel?


14-1091605212
Layner
2004-08-04 11:40
2004.08.22
Почему такая дискриминация русского???


4-1089625023
DVM
2004-07-12 13:37
2004.08.22
CAD программно в Win9X


14-1091538875
Ziko
2004-08-03 17:14
2004.08.22
HTML, тэг <select>, изменение рамки комбобокса


1-1091597819
oleg_SYS
2004-08-04 09:36
2004.08.22
Извлечение текста из PDF-файла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский