设置Paintbox字体大小,OnPaint变长尾,为何如此?

2026-04-10 21:202阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计342个文字,预计阅读时间需要2分钟。

设置Paintbox字体大小,OnPaint变长尾,为何如此?

我需要将一些文本写入到PaintBox中,在OnPaint事件中完成。当我在方法中设置两次fontSize时,会重复调用OnPaint事件。请仔细看看,试试这个:创建一个新的VCL Forms应用程序,在表单上放置一个PaintBox,将文本写入PaintBox中。

我需要写一些文本到paintbox,我在OnPaint事件中做.当我在方法中设置两次fontsize时,会重复调用OnPaint事件.

要亲眼看看,试试这个:

>创建一个新的VCL Forms应用程序
>在表单上放置一个paintbox
>将以下代码放在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;

当您运行该应用程序时,您将在paintbox上看到一条“跳”的线.但是,如果删除设置fontsize的一条或两条线,您将看到一条固定线.

为什么会发生这种情况,我该怎么做才能解决这个问题?

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

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

设置Paintbox字体大小,OnPaint变长尾,为何如此?
标签:fontsiz

本文共计342个文字,预计阅读时间需要2分钟。

设置Paintbox字体大小,OnPaint变长尾,为何如此?

我需要将一些文本写入到PaintBox中,在OnPaint事件中完成。当我在方法中设置两次fontSize时,会重复调用OnPaint事件。请仔细看看,试试这个:创建一个新的VCL Forms应用程序,在表单上放置一个PaintBox,将文本写入PaintBox中。

我需要写一些文本到paintbox,我在OnPaint事件中做.当我在方法中设置两次fontsize时,会重复调用OnPaint事件.

要亲眼看看,试试这个:

>创建一个新的VCL Forms应用程序
>在表单上放置一个paintbox
>将以下代码放在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;

当您运行该应用程序时,您将在paintbox上看到一条“跳”的线.但是,如果删除设置fontsize的一条或两条线,您将看到一条固定线.

为什么会发生这种情况,我该怎么做才能解决这个问题?

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

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

设置Paintbox字体大小,OnPaint变长尾,为何如此?
标签:fontsiz