【发布时间】:2017-09-28 16:52:05
【问题描述】:
TCanvasGPU 用于 FireMonkey 上的移动平台。不幸的是,正如有人发现的那样:FMX on iOS: how to perform partial invalidation?,此画布不支持 cliprects,并且 Canvas.InvalidateRect(TRectF) 总是使整个画布无效。
这不会那么糟糕,除了画布背景总是在 OnPaint 事件之前被擦除。这意味着任何仅更新 OnPaint 中的矩形的尝试都注定要失败,因为首先清除整个区域。所以即使是最小的更新也需要绘制整个画布。
有谁知道是否可以阻止在 FireMonkey 中擦除控件(特别是 TPaintBox)背景?过去在 VCL 中可以通过设置 ControlStyle := ControlStyle + [csOpaque] 来实现。
我在 FMX.Forms 中找到了 TCustomForm.PaintBackground,制作了一个本地副本并在 TCustomForm.PaintRects 中注释掉了对此的调用,认为它会阻止控件被擦除,但 TPaintBox 画布仍然以某种方式被清除。
【问题讨论】:
标签: android ios delphi canvas firemonkey