2017-09-28 13 views
0

TCanvasGPUは、FireMonkey上のモバイルプラットフォームに使用されます。残念ながら、誰かが発見したように:FMX on iOS: how to perform partial invalidation?、このキャンバスはクリップの正しさをサポートせず、Canvas.InvalidateRect(TRectF)は常にキャンバス全体を無効にします。FireMonkey TPaintBoxのバックグラウンドを消去しないようにするにはどうすればよいですか?

これは、キャンバスの背景が常にOnPaintイベントの前に消去されることを除いて、それほど悪くはありません。つまり、OnPaint内の矩形だけを更新しようとすると、領域全体が最初にクリアされるため、破棄されます。したがって、最小の更新でさえ、キャンバス全体を描画する必要があります。

FireMonkeyで消去されたコントロール(特にTPaintBox)の背景を止めることができるかどうか知りませんか?以前は、ControlStyle:= ControlStyle + [csOpaque]を設定してVCLで可能でした。

FMX.FormsのTCustomForm.PaintBackgroundがローカルコピーを作成し、TCustomForm.PaintRectsの呼び出しをコメントアウトしました。コントロールが消去されると思っても、TPaintBoxキャンバスはまだ何とかクリアされています。自分の質問に答えるために

答えて

0

...デフォルトで

TFormは、最初のコンポーネントとしてTRectangleを含めるようにスタイル設定され、これは任意のペイントイベントでライトグレーで満たされています。

FMX.Objects.TRectangle.Paintで記入してください.Windowsでは、TPaintBox CanvasはInvalidateに画像を保持しています。

Androidでは残念ながら、画面は明るい灰色ではなく黒くクリアされます。したがって、TCanvasGPUイメージは、モバイルでのペイントイベントの間で維持されていないように見えます。これはおそらく、クリップの修正がサポートされていないためです。

関連する問題