TCanvasGPU用于FireMonkey上的移动平台。不幸的是,当有人发现:FMX on iOS: how to perform partial invalidation?,这个画布不支持cliprects,而Canvas.InvalidateRect(TRectF)总是使整个画布无效。如何阻止FireMonkey TPaintBox擦除其背景?
这不会那么糟糕,除了画布背景总是在OnPaint事件之前被擦除。这意味着任何试图更新OnPaint中的矩形都是注定的,因为首先清除整个区域。所以即使是最小的更新也需要绘制整个画布。
有谁知道是否可以停止在FireMonkey中删除控件(特别是TPaintBox)背景?它曾经可以在VCL中通过设置ControlStyle:= ControlStyle + [csOpaque]来实现。
我在FMX.Forms中找到TCustomForm.PaintBackground,做了一个本地副本,并在TCustomForm.PaintRects中对此进行了注释,认为它会阻止控件被擦除,但TPaintBox画布仍然以某种方式被清除。