【发布时间】:2016-04-18 15:24:25
【问题描述】:
我做了一个小应用,
我有 form.color := clolive ; 的主窗体
并设置了transparentcolor := true;
和TransparentColorvalue := clolive;
它在我的 Windows 8.1 上运行良好,没有桌面效果。
我可以在mainform.canvas 上“画画”
当我在具有视觉样式的 Windows 7 上测试这个迷你应用程序时,表单透明度被忽略,我无法绘图,我的鼠标光标“触摸”了mainform“后面”的图标和对象
有什么解决办法吗?
谢谢
我的代码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
application.minimize;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
application.terminate;
end;
procedure TForm1.FormClick(Sender: TObject);
var p: TPoint;
begin
form1.Canvas.Pen.Color:=clyellow;
form1.Canvas.Pen.Width:=5;
p.X:=mouse.CursorPos.X;
p.y:=mouse.CursorPos.Y;
form1.Canvas.PenPos:=p;
form1.Canvas.LineTo(p.x,p.y);
end;
end.
表格1:
formstyle:=fsStayOnTop;
borderstyle:=bsNone;
WindowState:=wsMaximized;
TransparentColor:=true;
TransparentColorValue:=clOlive;
Color:=clOlive;
【问题讨论】:
-
我想我们可以尝试构建您的程序并进行调查。但是我肯定会担心我构建的程序与您的程序不同,因此会调试错误的东西。接下来发生的事情是你说,“哦,不,我的程序不是那样的,它是这样的”。就这样。它可能不会以这种方式发生,但它会发生很多次。如果您提供了minimal reproducible example,那么这种情况是不可能的。
-
感谢@DavidHeffernan 的回复。它的应用非常简单,只需设置透明度,一键最小化和退出...和 mainform.Canvas.Pen.Color:=clyellow; formstyle fs最大化,增加了一个事件:Tmainform.FormClick(Sender: TObject);以下是什么: p(TPoint) p.x:=mouse.cursorpos.x; p.y:=mouse.cursorpos.y; mainform.Canvas.PenPos:=p; mainform.canvas.lineto(p.x,p.y);所以 - 整个程序基于在桌面上绘制“点”、线。原因 - 这将是教师的帮助,他们可以标记和绘制到桌面而不影响图标等......)
-
你知道吗,我想我不会。如果您找不到在问题中添加minimal reproducible example 的动机,我不能。
-
@DavidHeffernan - 整个代码已添加到问题中...
标签: forms delphi transparency