我正在尝试制作一个模拟时钟,其中我希望在Seconds更改时使我的'秒'线不可见。我试图将笔模式设置为pmNotCopy
但它只给出笔颜色的反转。必须在此Form1.Canvas.Pen.Mode:=<Blank>
中设置什么属性,以便My Line消失?
也欢迎任何其他想法。
由于
答案 0 :(得分:9)
现代计算机速度非常快。如果我是你,我肯定会每秒从头开始绘制整个时钟。问题解决了。此外,如果你需要消除锯齿,那么简单的笔模式技巧将无法工作。
(如果您没有使用远程桌面,则可能需要使用双缓冲。)
答案 1 :(得分:2)
我对delphi一无所知,但是如果盒子在思考的话,我只知道一些: 你不能将线条的颜色改为背景颜色,使其“隐形”
答案 2 :(得分:2)
你很亲密。您需要使用pmXOR
。
试试这个:
创建一个新的Delphi VCL Forms应用程序。将TButton放在窗体底部(Button1)。 将以下代码添加到Button1Click事件中。
运行该应用程序。单击按钮,将在顶部绘制三条平行线。再次单击该按钮,三行将消失。
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
Canvas.Pen.Mode := pmXor;
Canvas.Pen.Color := clGreen;
for i := 1 to 3 do
begin
Canvas.MoveTo(50, i * 20);
Canvas.LineTo(Width - 50, i * 20);
end;
end;
通常应在OnPaint事件中完成所有绘图;我只是出于演示原因故意插入Button1Click事件。
同样注意:您不应该在该表单的事件处理程序中使用Form1
。引用Form1
变量会阻止您创建多个表单实例。请改用Self
,这将自动引用代码运行的实例。