Delphi重新创建画布

时间:2017-05-27 15:50:44

标签: delphi canvas

我正在编写自己的画布组件。我创建了一个重新创建控件画布的过程:

procedure ClearCanvas;
 begin
 FreeAndNil(FCanvas);
 FCanvas := TControlCanvas.Create;
 TControlCanvas(FCanvas).Control := Self;
 end; 

新创建的画布运行良好,但旧画布仍然显示其内容!

代码中的任何错误?! 感谢

1 个答案:

答案 0 :(得分:1)

您显示的代码没有错误,它成功创建了一个附加到控件并删除旧控件的控件画布。

当您释放画布时,您看到的内容不会被清除,因为它不属于画布。 VCL画布是一个易于使用底层操作系统的图形功能的类。绘制的内容最终取决于为窗口检索的设备上下文。如果在你的情况下用一个真实的画布进行类比是绝对必要的,你必须摆脱你的控制窗口(或者它的父窗口,如果它是一个图形控件)开始一个< em> new canvas

您必须实际做的是擦除内容。擦除不是字面意思,实际上是用任何被认为是初始状态的背景进行绘画。