gpt4 book ai didi

Delphi重新创建 Canvas

转载 作者:行者123 更新时间:2023-12-03 19:48:06 25 4
gpt4 key购买 nike

我正在编写自己的具有 Canvas 的组件。我做了一个程序来重新创建控件的 Canvas :

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

新创建的 Canvas 效果很好,但旧 Canvas 仍在显示其内容!

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

最佳答案

您显示的代码没有错误,它成功创建了一个控件 Canvas ,该 Canvas 附加到控件并摆脱了旧 Canvas 。

当您释放 Canvas 时,您看到的内容不会被清除,因为它不属于 Canvas 。 VCL Canvas 是一个易于使用底层操作系统的图形功能的类。最终绘制的内容是在为窗口检索的设备上下文上。如果绝对有必要在您的情况下与实际 Canvas 进行类比,则必须摆脱控件的窗口(如果它是图形控件,则必须摆脱其父窗口)才能从新的 Canvas 开始。

您实际要做的是删除内容。删除不是字面上的,它实际上是用被认为是初始状态的任何背景进行绘画。

关于Delphi重新创建 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44218837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com