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

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

Народ, помогите!!!!, Как сделать форму прозрачной...


Ifrit ©   (2003-03-09 13:32:00) 

Народ, помогите!!!!, Как сделать форму прозрачной, т.е. помещаю на неё TImage с каким-то рисунком и что-бы был виден только этот рисунок (без формы).


Mihey   (2003-03-14 18:07:00) [1]

Юзая регионы можно действительно юзайть под формой что угодно. Есть компонент TPlasmaForm, он простенький, реализует этот принцип.


PWWA   (2003-03-14 17:08:00) [2]

есть библиотека компонентов 1st Class но она только под Дельфи 5, других пока не нашел.... относительно шустрая штука. и кроме того через "просветы" можно управлять окнами, находящимися снизу


Kair   (2003-03-10 20:55:00) [3]

Form1.Color:=clRed;
Form1.TransparentColor:=clRed;
Form1.TransParent:=true;
Image1.Transparent:=true;

Но на компе где с видео-картой проблемы, видно.


Ifrit   (2003-03-10 16:33:00) [4]

Большое спасибо... Был бы очень признателен, если бы дал примеры :)


Mihey   (2003-03-09 20:29:00) [5]

Используй регионы, созданные по подобию картинки. В общем, даю две функции:

procedure CropWindow( Handle: HWnd; Picture : TPicture );
var
hrgn, hrgn1 : integer;
hdc : integer;
x, y : integer;
Color : TColor;
begin
// Color := Picture.Bitmap.Canvas.Pixels[ 0, 0 ];
Color := clWhite;
hdc := GetDC( Handle );
hrgn := CreateRectRgn( 0, 0, Picture.Graphic.Width, Picture.Graphic.Height );
for x := 1 to Picture.Graphic.Width do
for y := 1 to Picture.Graphic.Height do
if Picture.Bitmap.Canvas.Pixels[ x - 1, y - 1 ] = Color then begin
hrgn1 := CreateRectRgn( x - 1, y - 1, x, y);
CombineRgn( hrgn, hrgn, hrgn1, RGN_DIFF );
DeleteObject( hrgn1 );
end;
SetWindowRgn( Handle, hrgn, true );
//DeleteObject( hrgn );
ReleaseDC( Handle, hdc);
end;

procedure UncropWindow( Handle: HWnd; Picture : TPicture );
var
hrgn : integer;
hdc : integer;
begin
hdc := GetDC( Handle );
hrgn := CreateRectRgn( 0, 0, Picture.Graphic.Width , Picture.Graphic.Height );
SetWindowRgn( Handle, hrgn, true );
ReleaseDC( Handle, hdc );
end;

Применяй их к дескриптору окна. Если надо примеры - то дам. Готовое решение уже оформлено ввиде компонента TPlasma. Найдёшь его где угодно.


Наверх

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