![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Окна нестандартной формы (не круглой,не овальной), [D6, Win95/98]
ikivio © (2002-06-28 00:30:00)Где-то в форумах я это видел.
Искал 3 часа так и не нашел.:(
Создание главного окна нестандартной формы.
(не круглой,не овальной), а по заданному
рисунку. Подскажите где найти!
KvORubin (2002-06-28 10:50:00) [1]Компонент:
1stClass Professional v3000.0 A for Delphi 6
Он ещё ни так умеет издеваться над формой, я делал мазайку по рисунку, а потом разкидевал мышкой по всему рабочему столу..
Компонент весит 2 метра, где найти незнаю, но качать никаму не собираюсь.. дорого..
easy (2002-06-28 10:04:00) [2]
function lSetRegion(pic:TBitmap; lBackColor:TColor):HRGN;
var
lRgn,lSkinRgn,lStart,lX,lY,lHeight,lWidth: Longword;
begin
lSkinRgn := CreateRectRgn(0,0,0,0);
lHeight:=pic.Height;
lWidth:=pic.Width;
For lX := 0 To (lHeight - 1) do
begin
lY := 0;
While lY < lWidth do
begin
While (lY < lWidth) And (GetPixel(pic.Canvas.Handle , lY, lX) = lBackColor) do
lY := lY + 1;
If lY < lWidth Then
begin
lStart := lY;
While (lY < lWidth) And (GetPixel(pic.Canvas.Handle, lY, lX) <> lBackColor) do
lY := lY + 1;
If lY > lWidth Then lY := lWidth;
lRgn := CreateRectRgn(lStart, lX, lY, lX + 1);
CombineRgn (lSkinRgn, lSkinRgn, lRgn, RGN_OR);
DeleteObject (lRgn);
end;
end;
end;
result:=lSkinRgn;
end;
Использование:
SetWindowRgn (form1.Handle, lSetRegion(image1.Picture.Bitmap,$FF00FF{-цвет прозрачности}), True);
Игорь Шевченко (2002-06-28 09:49:00) [3]На http://www.delphikingdom.comв разделе "Подземелье магов" есть статья Антона Григорьева на эту тему. Рекомендую.