FMX.Graphics.TCanvas.BeginScene

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

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

C++

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

Propriétés

Type Visibilité  Source Unité  Parent
function public
FMX.Graphics.pas
FMX.Graphics.hpp
FMX.Graphics TCanvas


Description

Notifie l'objet TCanvas que le dessin peut commencer.

Appelez BeginScene avant de dessiner sur le TCanvas.

Pour terminer la session de dessin, appelez EndScene.

Si une application a appelé BeginScene et que BeginScene renvoie True, l'application doit appeler EndScene. Ce qui signifie que le modèle d'appel recommandé doit ressembler à ce qui suit :

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

Chaque fois que l'objet TCanvas appelle BeginScene et que BeginScene renvoie True, la valeur de la propriété BeginSceneCount est augmentée de 1. Chaque fois que l'objet TCanvas appelle EndScene, la valeur de la propriété BeginSceneCount est réduite de 1. BeginScene utilise BeginSceneCount pour garantir que l'objet TCanvas n'a pas plus d'un dessin initialisé à un moment donné.

Conseil : Sachez qu'appeler BeginScene dans le gestionnaire d'événement OnPaint n'a pas d'effet car BeginScene est appelé avant l'exécution du gestionnaire d'événement OnPaint. Cela garantit que le dessin se produit toujours dans OnPaint sans nécessiter de code supplémentaire pour que le dessin puisse avoir un effet.
Remarque : TCanvas et toutes les sous-classes prennent en charge les environnements multi-thread mais ne supportent pas l'exécution simultanée des instances de Canvas. Cela signifie que quand un Canvas appelle BeginScene, l'exécution du code à l'intérieur de cette section BeginScene...EndScene bloque toute autre tâche qui tente de traiter le dessin, y compris le dessin sur d'autres canevas. Ecrivez des blocs BeginScene...EndScene aussi courts que possible pour éviter de bloquer d'autres threads.


Voir aussi