实现半透明的窗体!!!

解决方案 »

  1.   

    delphi6窗口有兩個屬性可以實現﹕AlphaBlend 設為True
                                    AlphaBlendValue 設為你想要的透明程度。
      

  2.   

    api,可以轻易的实现半透明的窗体,源程序如下,必要的地方我加上了注释
    unit unit1;interfaceuses
      windows, messages, sysutils, classes, graphics, controls, forms, dialogs;const 
      ws_ex_layered = $80000;
      ac_src_over = $0;
      ac_src_alpha = $1;
      ac_src_no_premult_alpha = $1;
      ac_src_no_alpha = $2;
      ac_dst_no_premult_alpha = $10;
      ac_dst_no_alpha = $20;
      lwa_colorkey = $1;
      lwa_alpha = $2;
      ulw_colorkey = $1
      ulw_alpha = $2
      ulw_opaque = $4
    //新增加的常量定义
    type
      tform1 = class(tform)
        procedure formcreate(sender: tobject);
      private
        { private declarations }
      public
        { public declarations }
      end;function setlayeredwindowattributes(hwnd:hwnd; crkey:longint; balpha:byte; dwflags:longint ):longint; stdcall; external user32;//函数声明var
    form1: tform1;implementation
    {$r *.dfm}
    procedure tform1.formcreate(sender: tobject);
    var l:longint;
    begin
        l:=getwindowlong(handle, gwl_exstyle);
        l := l or ws_ex_layered;
        setwindowlong (handle, gwl_exstyle, l);
        setlayeredwindowattributes (handle, 0, 180, lwa_alpha);
    //第二个参数是指定透明颜色
    //第二个参数为0则使用第四个参数设置alpha值,从0到255,其他的我不太清楚,因为没有api帮助
    end;end.
      

  3.   

    d6已经加了两个属性Alphablend和AlphaBlendValue前者为真,后者是透明程度。不过,在窗口显示的时候可能会出现闪烁。
      

  4.   

    在Windows2000下:使窗体的Alphablend属性为true;Alphablendvalue的值为100(自己确定,它是透明度的参考值)
      

  5.   

    但是在win98下这些都不能实现半透明窗口。只有在win2k下才能实现