为什么画布操作与包含对象无关?

时间:2018-08-28 15:10:51

标签: delphi firemonkey

在Windows Firemonkey应用程序中,当我在窗体的中间为矩形发出以下命令时:

rect.Canvas.BeginScene;
rect.Canvas.Clear(TAlphaColorRec.White);
rect.Canvas.EndScene

整个表格被涂成白色。

在XE2中不是这种情况。 Delphi 10中就是这种情况。

我忽略了什么新范式?

1 个答案:

答案 0 :(得分:3)

原始的画布(例如TPaintBox和所有TShape后代)控件是表单的画布。控件直接在此画布上绘制。因此,调用Control.Canvas.Clear()将清除整个表单。不用调用Clear,而应使用Fill的{​​{1}}属性,如下所示:

TRectangle

我无法评论Delphi XE2中的情况,但是从那以后,FMX库有了很多更改。也许这是其中之一。

另请参阅FireMonkey Component Rendering