我正在编写自己的画布组件。我创建了一个重新创建控件画布的过程:
procedure ClearCanvas;
begin
FreeAndNil(FCanvas);
FCanvas := TControlCanvas.Create;
TControlCanvas(FCanvas).Control := Self;
end;
新创建的画布运行良好,但旧画布仍然显示其内容!
代码中的任何错误?! 感谢
答案 0 :(得分:1)
您显示的代码没有错误,它成功创建了一个附加到控件并删除旧控件的控件画布。
当您释放画布时,您看到的内容不会被清除,因为它不属于画布。 VCL画布是一个易于使用底层操作系统的图形功能的类。绘制的内容最终取决于为窗口检索的设备上下文。如果在你的情况下用一个真实的画布进行类比是绝对必要的,你必须摆脱你的控制窗口(或者它的父窗口,如果它是一个图形控件)开始一个< em> new canvas 。
您必须实际做的是擦除内容。擦除不是字面意思,实际上是用任何被认为是初始状态的背景进行绘画。