Delphi 为什么画布操作与包含对象无关? 在Windows FixScript应用程序中,当我为矩形发出以下内容时,在窗体的中间: rect.Canvas.BeginScene; rect.Canvas.Clear(TAlphaColorRec.White); rect.Canvas.EndScene

Delphi 为什么画布操作与包含对象无关? 在Windows FixScript应用程序中,当我为矩形发出以下内容时,在窗体的中间: rect.Canvas.BeginScene; rect.Canvas.Clear(TAlphaColorRec.White); rect.Canvas.EndScene,delphi,firemonkey,Delphi,Firemonkey,整个形状被漆成白色 XE2的情况并非如此。德尔福10就是这样 我忽略的新范例是什么?原语(例如TPaintBox和所有TShape子体)控件的画布是表单的画布。控件直接在此画布上绘制。因此,调用Control.Canvas.Clear()将清除整个表单。不要调用Clear,而应该使用TRectangle的Fill属性,如下所示: Rectangle1.Fill.Color := TAlphaColorRec.White; 我无法评论它在Delphi XE2中的表现,但从那时起,FMX库发生了许

整个形状被漆成白色

XE2的情况并非如此。德尔福10就是这样

我忽略的新范例是什么?

原语(例如
TPaintBox
和所有
TShape
子体)控件的画布是表单的画布。控件直接在此画布上绘制。因此,调用
Control.Canvas.Clear()
将清除整个表单。不要调用
Clear
,而应该使用
TRectangle
Fill
属性,如下所示:

Rectangle1.Fill.Color := TAlphaColorRec.White;
我无法评论它在Delphi XE2中的表现,但从那时起,FMX库发生了许多变化。也许这就是其中之一

另请参阅

原语(例如
TPaintBox
和所有
TShape
子体)控件的画布是表单的画布。控件直接在此画布上绘制。因此,调用
Control.Canvas.Clear()
将清除整个表单。不要调用
Clear
,而应该使用
TRectangle
Fill
属性,如下所示:

Rectangle1.Fill.Color := TAlphaColorRec.White;
我无法评论它在Delphi XE2中的表现,但从那时起,FMX库发生了许多变化。也许这就是其中之一


另请参阅

谢谢。我使用rect.Canvas.ClearRect(rect.AbsoluteRect,TAlphaColorRec.White)进行了测试。我想从现在起我将大量使用SetMatrix方法。谢谢。我使用rect.Canvas.ClearRect(rect.AbsoluteRect,TAlphaColorRec.White)进行了测试。我想从现在起我会大量使用SetMatrix方法。