零
零度
Unregistered / Unconfirmed
GUEST, unregistred user!
我想在已知窗体中,创建一个新的透明窗体,具体步骤如下:
首先建立一个工程,在Form1上,放一个Panel,并且置顶,再在Panel上,放一个PaintBox,位与Panel内,并且PaintBox.Align := alClient.再在窗体上放一个Botton,在BottonClick实践中创建一个新的Form,并实现透明,代码如下:
var myForm : TForm;
procedure TForm1.ButtonClick(Sender : TOBject);
begin
myForm := TForm.Create(PaintBox1);//注意是PaintBox
myForm.Parent := PaintBox1.Parent;
myForm.Color := clRed;
myForm.TransparentColor := True;
myForm.TransparentColorValue := clRed;//设置透明色为红色
myForm.FormStyle := fsStayOnTop;
myForm.Show;
end;
现在问题是,当我把这段代码,放在我自己的一类模块中运行时,Form不能透明;第二,当我独立运行这段程序时,透明过头,也就是说,能看到整个应用后面的东西,而我所希望的只是要透明新建立的Form,而能看到Panel上的东西。
是否有其他办法解决这个问题,或者说不考虑用Form,用别的控键或方法,而能在PaintBox上建立个独立的透明层呢,同要具备Canvas的特性??
首先建立一个工程,在Form1上,放一个Panel,并且置顶,再在Panel上,放一个PaintBox,位与Panel内,并且PaintBox.Align := alClient.再在窗体上放一个Botton,在BottonClick实践中创建一个新的Form,并实现透明,代码如下:
var myForm : TForm;
procedure TForm1.ButtonClick(Sender : TOBject);
begin
myForm := TForm.Create(PaintBox1);//注意是PaintBox
myForm.Parent := PaintBox1.Parent;
myForm.Color := clRed;
myForm.TransparentColor := True;
myForm.TransparentColorValue := clRed;//设置透明色为红色
myForm.FormStyle := fsStayOnTop;
myForm.Show;
end;
现在问题是,当我把这段代码,放在我自己的一类模块中运行时,Form不能透明;第二,当我独立运行这段程序时,透明过头,也就是说,能看到整个应用后面的东西,而我所希望的只是要透明新建立的Form,而能看到Panel上的东西。
是否有其他办法解决这个问题,或者说不考虑用Form,用别的控键或方法,而能在PaintBox上建立个独立的透明层呢,同要具备Canvas的特性??