You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何清空FMX中TPaintBox的所有绘制内容?

在FMX中清空TPaintBox绘制内容的正确方法
  • 别尝试PaintBox1.Canvas := nil,这在FMX里完全无效,Canvas不能这么操作。
  • 最直接的解决方案是点击按钮时,用Canvas填充整个PaintBox区域为背景色,代码示例:
procedure TForm1.Button1Click(Sender: TObject);
begin
  PaintBox1.Canvas.BeginScene;
  try
    // 用PaintBox自身的背景色清空,也可以指定固定颜色比如TAlphaColors.White
    PaintBox1.Canvas.Clear(PaintBox1.Fill.Color);
  finally
    PaintBox1.Canvas.EndScene;
  end;
end;
  • 要注意:所有操作Canvas的代码必须放在BeginScene和EndScene之间,否则不会生效。
  • 如果你是通过OnPaint事件动态绘制内容,还可以加个控制变量:比如声明一个布尔变量FNeedClear,点击按钮时设置FNeedClear := True并调用PaintBox1.Repaint(),然后在OnPaint事件里判断,若FNeedClear为True,就只执行清空逻辑,不运行绘制代码,之后再把FNeedClear设为False。

内容的提问来源于stack exchange,提问作者user31362432

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 10:42:02