我尝试过用Panel上加一个图片,但是Panel却不知道怎么设置透明。请问还有什么更好的办法没。可以悬浮在Webbrowser控件之上。谢谢

解决方案 »

  1.   

    要么自己处理背景,要么用第三方试试,比如RzPanel,他可以设置透明
      

  2.   


    Function GetWebBrowserWindow(Web : TWebBrowser) : THandle;
    var
      hWin : THandle;
    begin
      Result := 0;
      hWin := GetWindow(Web.Handle, GW_CHILD);
      while hWin<>0 do begin
        Result := hWin;
        hWin := GetWindow(hWin, GW_CHILD);
        if hWin = 0 then Break;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      Canvas : TCanvas;
      hWin : THandle;
    begin
      hWin := GetWebBrowserWindow(Web);
      Canvas := TCanvas.Create;
      Canvas.Handle := GetDC(hWin);
      Canvas.Brush.Style := bsClear;
      Canvas.Ellipse(5,5,200,200);
      Windows.ReleaseDC(hWin , Canvas.Handle);
      Canvas.Handle := 0;
      Canvas.Free;
    end;
    这样可以画一个圆,需要用这个方法响应WM_PAINT消息,并且计算滚动条位置才能到达目的
      

  3.   

    这个方法我试过了 RzPanel真心不好用
      

  4.   

    还有个问题,如果Webbrowser上面加载了Flash,在Flash上面画圆闪一下即消失了,这个有办法解决吗,不胜感激!
      

  5.   

    Image也可以设置透明。不过前题必须是bmp图片,属性是Transparent设置为True即可。
      

  6.   

    LZ的悬浮圆是什么场景下使用?最好使用支持透明度调整的第三方控件或HTML+Css达到目的
    使用canvas会让你疲于应付
      

  7.   

    也可以这么实现
    ---------------------------
    在主窗体上创建一个透明窗体, 在透明窗体上画一个圆(可以画任何形状,或安放控件)包含webbrowser的窗体代码
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, OleCtrls, SHDocVw, ExtCtrls;type
      TForm1 = class(TForm)
        wb1: TWebBrowser;
        procedure FormShow(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
        frm : TForm;
        procedure WMMOVE(var Msg: TMessage); message WM_MOVE;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      frm := TForm.Create(self);
      frm.Top := self.Top + 50;
      frm.Left := self.Left + 50;
      frm.Width := 100;
      frm.Height := 100;
      frm.FormStyle := fsStayOnTop;
      frm.BorderStyle := bsNone;
      frm.TransparentColor := True;
      frm.TransparentColorValue := Color;
      frm.Show;
      frm.Canvas.Ellipse(0,0, 100, 100);
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
      frm.Free;
    end;procedure TForm1.FormShow(Sender: TObject);
    begin
      wb1.Navigate('http://news.baidu.com');
    end;procedure TForm1.WMMOVE(var Msg: TMessage);
    begin
      //主窗体移动位置时, 透明窗体跟着移动
       Inherited;
      if frm <> nil then
      begin
        frm.Top := self.Top + 50;
        frm.Left := self.Left + 50;
      end;
    end;end.