一个FORM,用右键弹出选项,选择一个以后窗体变透明,最好是可以选择透明程度的~~HOHO,多谢啦~~

解决方案 »

  1.   

    多谢啦,直接发我箱子得了,
    [email protected]
    3Q~~
      

  2.   

    奥,我 知道 了 
    procedure TForm1.CreateParams(var Params:TCreateParams);
    begin
      inherited CreateParams(Params);
      Params.ExStyle:=Params.ExStyle or WS_EX_TRANSPARENT;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      inherited;
      Canvas.Brush.Style:=bsClear;
    end;
    试一下,你 可以加在按钮中。
      

  3.   

    api 函数
    setlayer...后面的忘了,查一下最新的api帮助
      

  4.   

    设置窗体的AlphaBlend:=true;
    用AlphaBlendValue:=255;是窗体透明
      

  5.   

    设置窗体的AlphaBlend:=true;
    用AlphaBlendValue:=255;是窗体透明
    只在WIN2000,XP系统中可用!
      

  6.   

    在窗体中添加 button,然后加入以下代码:} procedure TForm1.FormCreate(Sender: TObject); 
    var 
      FullRgn, ClientRgn, ButtonRgn: THandle; 
      Margin, X, Y: Integer; 
    begin 
      Margin := (Width - ClientWidth) div 2; 
      FullRgn := CreateRectRgn(0, 0, Width, Height); 
      X := Margin; 
      Y := Height - ClientHeight - Margin; 
      ClientRgn := CreateRectRgn(X, Y, X + ClientWidth, Y + ClientHeight); 
      CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF); 
      X := X + Button1.Left; 
      Y := Y + Button1.Top; 
      ButtonRgn := CreateRectRgn(X, Y, X + Button1.Width, Y + Button1.Height); 
      CombineRgn(FullRgn, FullRgn, ButtonRgn, RGN_OR); 
      SetWindowRgn(Handle, FullRgn, True); 
    end;
      

  7.   

    设置窗体的AlphaBlend:=true;
    用AlphaBlendValue:=255;是窗体透明
      

  8.   

    setlayer...是WINDOWS 2000才有的罢。 yuhouyangguang(雨后阳光)的方法在移动窗口时就有问题了。
      

  9.   

    98、ME必须用图片实现 其他办法好象没有吧!
    98下可以这么使用
    也可以参考
    http://www2.ccw.com.cn/tips/2k07/070602_05.asp
    添加Image1 设置 align 为 alClient
    procedure TForm1.FormShow(Sender: TObject);
    var
       ScreenDc,DestDc:Hdc;
       BHandle:THandle;
       X,Y:integer;
       Color:TColor;
       Color1,Color2,Color3:Byte;
       FormRgn:Hrgn;
    begin
       FormRgn:=CreateRoundRectRgn(0,0,Width,Height,15,15);
       SetWindowRgn(Handle,FormRgn,True);
       ScreenDc:=CreateDc('DISPLAY',nil,nil,nil);
       DestDc:=CreateCompatibleDc(ScreenDc);
       BHandle:=CReateCompatibleBitmap(ScreenDc,Width,Height);
       SelectObject(DestDc,Bhandle);
       BitBlt(DestDc,0,0,Width,Height,ScreenDc,(Width)div 2,(Height)div 2,SRCCOPY);
       for x:=0 to Width-1 do begin
          for y:=0 to Height-1 do begin
             Color:=GetPixel(DestDc,x,y);
             Color1:=GetRValue(Color) div 3;
             Color2:=GetGValue(Color) div 3;
             Color3:=GetBValue(Color) div 3;
             Color:=RGB(Color1,Color2,Color3);
             SetPixel(DestDC,x,y,Color);
          end;
       end;
       BitBlt(Image1.Canvas.Handle,0,0,Width,Height,DestDC ,0,0,SRCCOPY);
       DeleteDc (DestDc);
       ReleaseDc (Bhandle,ScreenDc);
       with Image1.Canvas do begin
          Moveto(0,0);
          Pen.Color :=rgb(192,192,192);
          Lineto(Image1.Width -1,0); 
          Lineto(Image1.Width -1,Image1.Height -1);
          Lineto(0,Image1.Height-1);
          Pen.Color :=rgb(192,192,192);
          Lineto(0,0);
       end;
    end;2K,XP下 直接调用Form单元中的 AlphaBlendValue 速度慢 我这里是很慢很慢AlphaBlend:=true;你尝试一下速度!
    procedure TForm1.TrackBar1Change(Sender: TObject);
    begin
      AlphaBlendValue:=TrackBar1.Position;
    end;如果直接调用速度快方法如下
    function SetLayeredWindowAttributes(hwnd:HWND; crKey:Longint; bAlpha:byte; dwFlags:longint ):longint; stdcall; external user32;var
      Form1: TForm1;implementation{$R *.DFM}
    const
      WS_EX_LAYERED = $80000;
      LWA_ALPHA = $2;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);
      TrackBar1.Position:=255;
      SetLayeredWindowAttributes(handle, 0, 255, LWA_ALPHA);
    end;procedure TForm1.TrackBar1Change(Sender: TObject);
    begin
      SetLayeredWindowAttributes(handle, 0, TrackBar1.Position, LWA_ALPHA);
    end;
      

  10.   

    你可以这样: 在delphi6.0中form1的属性列表中有两个属性,分别为设置是否有你想变透明的颜色(名字我忘了,就在属性列表上你找一下为bool型),与你想变透明的颜色(transparent color :Tcolor),比如,你可以设form1为黑色(clblack),button,memo,edit,toolbar等设置为其它色,再设置有你想变透明的颜色为true;并设置你想变透明的颜色为黑色(clblack),即可