gpt4 book ai didi

delphi - 设置 Paintbox 的字体大小会导致调用 OnPaint

转载 作者:行者123 更新时间:2023-12-03 15:47:19 25 4
gpt4 key购买 nike

我需要向油漆盒写入一些文本,我在 OnPaint 事件中执行此操作。当我在方法中设置字体大小两次时,OnPaint 事件会被重复调用。

要亲自查看,请尝试以下操作:

  1. 创建新的 VCL Forms 应用程序
  2. 在表单上放置一个颜料盒
  3. 将以下代码放入 OnPaint 事件中:
procedure TForm1.PaintBox1Paint(Sender: TObject);begin  PaintBox1.Canvas.MoveTo(random(PaintBox1.Width),random(PaintBox1.Height));  PaintBox1.Canvas.LineTo(random(PaintBox1.Width),random(PaintBox1.Height));  PaintBox1.Font.Size := 10;   PaintBox1.Font.Size := 12; end;

当您运行该应用程序时,您将看到一条线在颜料盒上“跳跃”。但是,如果删除设置字体大小的一行或两行,您将看到一条固定的行。

为什么会发生这种情况?我可以采取什么措施来解决这个问题?

最佳答案

设置PaintBox1.Canvas.Font.Size而不是PaintBox1.Font.Size,您的问题将得到解决。

至于为什么会发生:更改控件的字体属性将导致其失效并重绘,并且在重绘的情况下执行此操作会导致无限循环。幸运的是,绘制事件是合成的,并且优先级低于其他消息,否则您的程序将挂起。

关于delphi - 设置 Paintbox 的字体大小会导致调用 OnPaint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3180096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com