Ein TCanvasGPU wird für mobile Plattformen auf FireMonkey verwendet. Leider, wie jemand entdeckt: FMX on iOS: how to perform partial invalidation?, unterstützt diese Leinwand nicht cliprects und Canvas.InvalidateRect (TRectF) immer die gesamte Leinwand ungültig.Wie kann ich verhindern, dass FireMonkey TPaintBox den Hintergrund löscht?
Dies wäre nicht so schlimm, außer dass der Canvas-Hintergrund immer vor einem OnPaint-Ereignis gelöscht wird. Das bedeutet, dass jeder Versuch, nur ein Rechteck in einem OnPaint zu aktualisieren, zum Scheitern verurteilt ist, da der gesamte Bereich zuerst gelöscht wird. So erfordert selbst das kleinste Update, dass die gesamte Leinwand gezeichnet wird.
Weiß jemand, ob es möglich ist zu stoppen ein Steuerelement (speziell TPaintBox) Hintergrund in FireMonkey gelöscht? Früher war es in VCL möglich, ControlStyle: = ControlStyle + [csOpaque] zu setzen.
Ich fand TCustomForm.PaintBackground in FMX.Forms, machte eine lokale Kopie und kommentierte den Aufruf dazu in TCustomForm.PaintRects, dachte, es würde Steuerelemente gelöscht werden, aber die TPaintBox Canvas wurde immer noch irgendwie gelöscht.