Конференция "KOL" » AlphaBlend и восстановление формы
 
  • Trible (12.03.08 06:04) [0]
    Всем привет,
    У меня форма имеет AlphaBlend:= 254, окно минимизируется в кнопку нормально без артефактов, но при восстановлении ( Form.Restore ) содержимое окна чернеет и через мгновение приходит в норму. Как предотвратить почернение формы при восстановлении из кнопки, если AlphaBlend не 255?
  • Trible (16.03.08 11:16) [1]
    Ну что, никто не знает?
  • Ned (16.03.08 18:54) [2]
    Попробуйте на это мгновение делать форму невидимой, а после разворачивания снова менять свойство Visible.
  • AMDX4 © (17.03.08 17:30) [3]
    Можно еще круче - при востановленние делаете окно невидимой AlphaBlend = 1
    а потом плавно делаете ее видимой - будет прикольней
  • Ned (18.03.08 18:23) [4]
    AMDX4 - дело в том, что чернеть область окна будет всё равно.
  • Trible (22.03.08 18:16) [5]

    > Ned   (16.03.08 18:54) [2]
    > Попробуйте на это мгновение делать форму невидимой, а после
    > разворачивания снова менять свойство Visible.

    Что-то не получается у меня. Может, дадите пример, как сделать?
    Конструкции типа

    procedure TForm1.KOLFormRestore(Sender: PObj);
    begin
    Form.Visible:= false;
    Form.Visible:= true;
    end;


    не катят (!!)
  • Дмитрий К © (22.03.08 19:06) [6]
    Может быть в момент сворачивания делать Alphablend = 255, а при разворачивании 254.
  • Дмитрий К © (22.03.08 19:31) [7]
    Что-нибудь типа:
    program Project1;

    uses
     Windows,Messages, KOL;

    const
     WM_SETALPHA = WM_USER + 1000;

    var form: PControl;

    procedure FormMinimize(Dummy, Sender: PObj);
    begin
     Form.Postmsg(WM_SETALPHA, 255,0);
    end;

    procedure FormRestore(Dummy, Sender: PObj);
    begin
     Form.Postmsg(WM_SETALPHA, 254,0);
    end;

    function FormMessage(Dummy: Pointer; var Msg: TMsg; var Rslt: Integer ): Boolean;
    begin
     Result := False;
     if Msg.Message = WM_SETALPHA then
       Form.AlphaBlend := Msg.wParam
    end;

    begin
     form := NewForm(nil, 'Test');
     form.AlphaBlend := 254;
     form.OnMessage := TOnMessage(MakeMethod(nil, @FormMessage));
     form.OnMinimize := TOnEvent(MakeMethod(nil, @FormMinimize));
     form.OnRestore := TOnEvent(MakeMethod(nil, @FormRestore));
     Run(form);
    end.

  • Trible (22.03.08 22:32) [8]

    > Дмитрий К ©   (22.03.08 19:31) [7]
    > Что-нибудь типа:

    Все равно мигает, при разворачивании.
 
Конференция "KOL" » AlphaBlend и восстановление формы
Есть новые Нет новых   [134431   +15][b:0][p:0.001]