如何实现一个悬浮的圆圈? 我尝试过用Panel上加一个图片,但是Panel却不知道怎么设置透明。请问还有什么更好的办法没。可以悬浮在Webbrowser控件之上。谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要么自己处理背景,要么用第三方试试,比如RzPanel,他可以设置透明 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消息,并且计算滚动条位置才能到达目的 这个方法我试过了 RzPanel真心不好用 还有个问题,如果Webbrowser上面加载了Flash,在Flash上面画圆闪一下即消失了,这个有办法解决吗,不胜感激! Image也可以设置透明。不过前题必须是bmp图片,属性是Transparent设置为True即可。 LZ的悬浮圆是什么场景下使用?最好使用支持透明度调整的第三方控件或HTML+Css达到目的使用canvas会让你疲于应付 也可以这么实现---------------------------在主窗体上创建一个透明窗体, 在透明窗体上画一个圆(可以画任何形状,或安放控件)包含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. ado链接数的问题 高薪聘请合作者 dataset中的记录问题? 定义变量编译不过去呀 如何打包 急求~!~ 我的Access表有249个字段,这对操作有影响吗? 小虾问大侠简单问题 delphi的小问题 关于实现动态画面的问题,有兴趣者请进 sendmessage用不了 如何在桌面画一个圆圈,自左向右移动?
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消息,并且计算滚动条位置才能到达目的
使用canvas会让你疲于应付
---------------------------
在主窗体上创建一个透明窗体, 在透明窗体上画一个圆(可以画任何形状,或安放控件)包含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.