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

Вниз

Совет: Окно произволльной формы   Найти похожие ветки 

 
Batoon   (2004-07-30 21:22) [0]

Я так посмотрел, посмотрел, почитал, почитал и понял...
А понял я, что чтобы сделать окно произвольной формы надо помучаться.
Есть конечно способы, там, например, строить точки и через полигон выводить все, есть способы, к

которым надо иметь математический подход. Но вот совершенно случайно на своей 7 делфе обнаружил,

как сделать окно произвольной формы при помощи.... КИСТОЧКИ ... :) Да-Да. При помощи кисточки

или любого другого инструмента в ЛЮБОМ графическом редакторе (хоть в Paint"е, хоть в

Potoshope"е).
Объясняю.
Делать пробовал только на 7 версии Делфи.

Так, значит:
1.Запускаем Делфю
2.В свойствах у формы выставляем TransparentColor:=False; TransparentColorValue:=clWindowFrame;
3.Открываем Paint(например), выбираем цвет rgb(0,128,128) и заливаем всю форму фтим цветом.
4.Выбираем другой цвет, кисть и рисуем, что хотим(цвет, который rgb(0,128,128) сотрется на

форме)
5.Сохраняем картинку и загружаем ее в TImage в Делфи.
6.Transparent:=false у TImage
7.Запускаем  прогу и ...............:)
Вот и все.


 
Кириешки ©   (2004-07-30 21:45) [1]

Вот отстой, я хотел засунуть сюда свою форму код которой длиной в 27 листов А4 в распечатанном виде со шрифтом в 11.
А мне говорят превышение длины сообщения. А теперь оказалось что я ее строил зря, что есть более простые методы? Вот отстой!!!


 
sniknik ©   (2004-07-30 21:48) [2]

это будет прямоугольная форма просто с видимым кривым рисунком. нарисуй дырку в форме и попробуй через нее кликнуть на просвечивающийся ярлычек. че не получается? то то же. ;о))


 
parovoZZ ©   (2004-07-30 21:53) [3]

Регион он и в Африке регион. А прозрачный цвет это всего лишь прозрачный цвет.


 
Юрий Зотов ©   (2004-07-30 21:55) [4]

> Кириешки

Окно непрямоугольной формы делается с помщью SetWindowRgn. Причем регион можно строить математикой, как здесь:
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=903
а можно и по картинке.


 
Кириешки ©   (2004-07-30 22:04) [5]

>Юрий Зотов ©   (30.07.04 21:55) [4]

А я ручками делал
Вот начало :

const
 n = 462;
var
 nn : integer;
 ResultReg, Reg : HRGN;
 P : array[0..n-1] of TPoint;
begin
 //Put Ellipse
 //инициализация ResultReg
 ResultReg := CreateEllipticRgn(22,63,590,351);
 //Put Ellipse
 Reg := CreateEllipticRgn(21,206,23,208);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_DIFF);
 //Put polygon
 nn := 4;
 P[0] := Point(22,206);
 P[1] := Point(22,208);
 P[2] := Point(620,208);
 P[3] := Point(620,206);
 Reg := CreatePolygonRgn(P, nn, ALTERNATE);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_DIFF);
 //Put Ellipse
 Reg := CreateEllipticRgn(619,206,621,208);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_DIFF);
 //Put Ellipse
 Reg := CreateEllipticRgn(305,64,307,66);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_DIFF);
 //Put polygon
 nn := 4;
 P[0] := Point(305,65);
 P[1] := Point(305,351);
 P[2] := Point(307,351);
 P[3] := Point(307,65);
 Reg := CreatePolygonRgn(P, nn, ALTERNATE);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_DIFF);
 //Put Ellipse
 Reg := CreateEllipticRgn(305,350,307,352);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_DIFF);
 //Put Ellipse
 Reg := CreateEllipticRgn(134,35,478,379);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_DIFF);
 //Put Ellipse
 Reg := CreateEllipticRgn(3,186,45,228);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put Ellipse
 Reg := CreateEllipticRgn(566,185,610,229);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put Ellipse
 Reg := CreateEllipticRgn(148,135,152,139);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put polygon
 nn := 4;
 P[0] := Point(150,135);
 P[1] := Point(150,139);
 P[2] := Point(463,139);
 P[3] := Point(463,135);
 Reg := CreatePolygonRgn(P, nn, ALTERNATE);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put Ellipse
 Reg := CreateEllipticRgn(461,135,465,139);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put Ellipse
 Reg := CreateEllipticRgn(461,135,465,139);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put polygon
 nn := 4;
 P[0] := Point(463,135);
 P[1] := Point(463,139);
 P[2] := Point(105,139);
 P[3] := Point(105,135);
 Reg := CreatePolygonRgn(P, nn, ALTERNATE);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put Ellipse
 Reg := CreateEllipticRgn(103,135,107,139);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put Ellipse
 Reg := CreateEllipticRgn(141,263,145,267);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put polygon
 nn := 4;
 P[0] := Point(143,263);
 P[1] := Point(143,267);
 P[2] := Point(485,267);
 P[3] := Point(485,263);
 Reg := CreatePolygonRgn(P, nn, ALTERNATE);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put Ellipse
 Reg := CreateEllipticRgn(483,263,487,267);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put Ellipse
 Reg := CreateEllipticRgn(129,207,133,211);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put polygon
 nn := 4;
 P[0] := Point(129,209);
 P[1] := Point(129,209);
 P[2] := Point(133,209);
 P[3] := Point(133,209);
 Reg := CreatePolygonRgn(P, nn, ALTERNATE);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put Ellipse
 Reg := CreateEllipticRgn(129,207,133,211);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put Ellipse
 Reg := CreateEllipticRgn(131,203,135,207);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put polygon
 nn := 4;
 P[0] := Point(131,205);
 P[1] := Point(131,205);
 P[2] := Point(135,205);
 P[3] := Point(135,205);
 Reg := CreatePolygonRgn(P, nn, ALTERNATE);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put Ellipse
 Reg := CreateEllipticRgn(131,203,135,207);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put Ellipse
 Reg := CreateEllipticRgn(129,203,133,207);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put polygon
 nn := 4;
 P[0] := Point(129,205);
 P[1] := Point(129,205);
 P[2] := Point(133,205);
 P[3] := Point(133,205);
 Reg := CreatePolygonRgn(P, nn, ALTERNATE);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put Ellipse
 Reg := CreateEllipticRgn(129,203,133,207);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put Ellipse
 Reg := CreateEllipticRgn(127,195,131,199);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put polygon
 nn := 4;
 P[0] := Point(127,197);
 P[1] := Point(127,215);
 P[2] := Point(131,215);
 P[3] := Point(131,197);
 Reg := CreatePolygonRgn(P, nn, ALTERNATE);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);
 //Put Ellipse
 Reg := CreateEllipticRgn(127,213,131,217);
 CombineRgn(ResultReg,ResultReg,Reg,RGN_OR);

ну и так далее, в общем длинная фигня.



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

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

Наверх




Память: 0.49 MB
Время: 0.027 c
6-1087188282
P@vel
2004-06-14 08:44
2004.08.15
Socket


1-1091090587
ksu
2004-07-29 12:43
2004.08.15
библиотека для растрово-векторной графики


14-1090995975
Jeer
2004-07-28 10:26
2004.08.15
Not for sale !


3-1090471464
malefik
2004-07-22 08:44
2004.08.15
Вопрос по параметрам.......TQuery


6-1087387389
Amirka
2004-06-16 16:03
2004.08.15
Как вытащить определенный текст из html-файла?