FMX.Graphics.TCanvas.BeginScene
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 appelleBeginScene
, l'exécution du code à l'intérieur de cette sectionBeginScene...EndScene
bloque toute autre tâche qui tente de traiter le dessin, y compris le dessin sur d'autres canevas. Ecrivez des blocsBeginScene...EndScene
aussi courts que possible pour éviter de bloquer d'autres threads.