FMX.Graphics.TCanvas.BeginScene

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

function BeginScene(AClipRects: PClipRects = nil;  AContextHandle: THandle = 0): Boolean;

C++

bool __fastcall BeginScene(PClipRects AClipRects = (PClipRects)(0x0), NativeUInt AContextHandle = (NativeUInt)(0x0));

プロパティ

種類 可視性 ソース ユニット
function public
FMX.Graphics.pas
FMX.Graphics.hpp
FMX.Graphics TCanvas


説明

描画が開始されたことを TCanvas オブジェクトに通知します。

BeginScene を、TCanvas での描画の前に呼び出します。

描画セッションを終了するには、EndScene を呼び出します。

アプリケーションが BeginScene を呼出し、BeginSceneTrue を返した場合、アプリケーションは EndScene を呼び出さなければなりません。つまり、推奨される呼出しパターンは次のようになります:

if Canvas.BeginScene then
  try
    Canvas.xxx   //drawing image operations
    ...
  finally
    Canvas.EndScene;
  end;

TCanvas オブジェクトが BeginScene を呼出し、BeginSceneTrue を返すたびに、BeginSceneCount プロパティの値は、1つ上がります。TCanvas オブジェクトが EndScene を呼出すたびに、BeginSceneCount プロパティの値は、1つ下がります。BeginSceneBeginSceneCount を使用して、TCanvas オブジェクトが一度に 1 つ以上初期化された描画を持たないよう、保証します。

ヒント: OnPaint イベント ハンドラで BeginScene を呼び出しても効果はない点に注意してください。これは、BeginScene が、OnPaint イベント ハンドラが実行される前に呼び出されるからです。 これにより、描画を有効にするために、余分な(そしておそらく想定していない)コードを記述しなくても、 描画が常に OnPaint で発生することが保証されます。
メモ: TCanvas およびすべてのサブクラスは、マルチスレッド環境をサポートしていますが、Canvas インスタンスの同時実行はサポートしていません。 これはつまり、Canvas が BeginScene を呼び出した際、この BeginScene...EndScene セクション内部のコードの実行は、他のキャンバスへの描画も含む、描画処理を試行するその他のスレッドをいずれもブロックすることを意味します。 BeginScene...EndScene ブロックをは極力短く記述して、その他のスレッドのブロックを回避するようにします。


関連項目