Конференция "Основная" » Прозрачность компонентов
 
  • viRUS © (27.01.08 20:23) [0]
    У меня проблема: я использую на форме RxGifAnimator с прозрачным анимированным gif. Форма прозрачная (из под нее виден Windows компоненты видны а формы нет. так вот, мне нужно, чтоб под RxGifAnimator не было фона. Для прозрачности формы пользуюсь этим:
    unit unit1;
    interface
    uses
     Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
     StdCtrls;
    type
     TForm1 = class(TForm)
     Button1: TButton;
     Button2: TButton;
       // это просто кнопка на форме - для демонстрации
     protected
       procedure RebuildWindowRgn;
       procedure Resize; override;
     public
       constructor Create(AOwner: TComponent); override;
     end;
    var
     Form1 : TForm1;
    implementation
    // ресурс этой формы
    {$R *.DFM}

    { Прозрачная форма }
    constructor TForm1.Create(AOwner: TComponent);
    begin
     inherited;
     // убираем сколлбары, чтобы не мешались
     // при изменении размеров формы
     HorzScrollBar.Visible:= False;
     VertScrollBar.Visible:= False;
     // строим новый регион
     RebuildWindowRgn;
    end;

    procedure TForm1.Resize;
    begin
     inherited;
     // строим новый регион
     RebuildWindowRgn;
    end;

    procedure TForm1.RebuildWindowRgn;
    var
     FullRgn, Rgn: THandle;
     ClientX, ClientY, I: Integer;
    begin
     // определяем относительные координаты клиенской части
     ClientX:= (Width - ClientWidth) div 2;
     ClientY:= Height - ClientHeight - ClientX;
     // создаем регион для всей формы
     FullRgn:= CreateRectRgn(0, 0, Width, Height);
     // создаем регион для клиентской части формы
     // и вычитаем его из FullRgn
     Rgn:= CreateRectRgn(ClientX, ClientY, ClientX + ClientWidth, ClientY +
    ClientHeight);
     CombineRgn(FullRgn, FullRgn, Rgn, rgn_Diff);
     // теперь добавляем к FullRgn регионы каждого контрольного элемента
     for I:= 0 to ControlCount -1 do
       with Controls[I] do begin
         Rgn:= CreateRectRgn(ClientX + Left, ClientY + Top, ClientX + Left +
    Width, ClientY + Top + Height);
         CombineRgn(FullRgn, FullRgn, Rgn, rgn_Or);
       end;
     // устанавливаем новый регион окна
     SetWindowRgn(Handle, FullRgn, True);
    end;
    end.
  • KilkennyCat © (27.01.08 20:42) [1]
    > чтоб под RxGifAnimator не было фона

    нужно его переписать.
  • viRUS © (27.01.08 20:46) [2]
    Что? RxGifAnimator?
  • KilkennyCat © (27.01.08 21:20) [3]
    наверное.
  • KilkennyCat © (27.01.08 21:23) [4]
    и кстати, прозрачность и отсутствие - разные вещи.
 
Конференция "Основная" » Прозрачность компонентов
Есть новые Нет новых   [134482   +35][b:0][p:0]