Показать сообщение отдельно
  #3  
Старый 17.06.2010, 08:05
Rjkzy Rjkzy вне форума
Прохожий
 
Регистрация: 15.06.2010
Адрес: дома
Сообщения: 34
Репутация: 10
Лампочка

можно сделать это по-другому. свойства формы не трогаем, но зато создаём дополнительное монохромное изображение, которое будет шаблоном. дальше пишем в Formcreate вставляем :
Код:
var
pict:TPicture;
begin
pict:=TPicture.Create;
pict.LoadFromFile('fon.bmp');
SetWindowRgn(Form1.Handle,RegionFromPicture(pict,RGB(255,255,255)),True);
pict.Free;

и отдельно функцию

Код:
function TForm1.RegionFromPicture(pict: TPicture; backcolor: TColor): HRGN;
var
rgn,resRgn: HRGN;
x,y,xfirst:Integer;
begin
  resRgn:=CreateRectRgn(0,0,0,0);
  for y:=0 to pict.Height-1 do
    begin
    x:=0;
    while x<pict.Width do
      begin
      if (pict.Bitmap.Canvas.Pixels[x,y] <> backcolor) then
        begin
        xfirst:=x;
        Inc(x);
        while (x<pict.Width) and (pict.Bitmap.Canvas.Pixels[x,y]<>backcolor) do
          Inc(x);
        rgn:=CreateRectRgn(xfirst,y,x-1,y+1);
        CombineRgn(resRgn,resRgn,rgn,RGN_OR);
        DeleteObject(rgn);
        end;
      Inc(x);
      end;
    end;
  Result:=resRgn;
end;
Admin: Учимся пользоваться тегами!

таким образом форма получиается как бы "дырявой", без всякой прозрачности.
Ответить с цитированием