Текущий архив: 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