Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Окна нестандартной формы (не круглой,не овальной), [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в разделе "Подземелье магов" есть статья Антона Григорьева на эту тему. Рекомендую.


Наверх

Титульная страница Поиск, карта сайта Написать письмо