如何清空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
相关产品推荐
相关产品推荐

