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));
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
function | public | FMX.Graphics.pas FMX.Graphics.hpp |
FMX.Graphics | TCanvas |
Beschreibung
Benachrichtigt das TCanvas-Objekt darüber, dass das Zeichnen beginnen kann.
Rufen Sie BeginScene vor dem Zeichnen auf TCanvas auf.
Um das Zeichnen zu beenden, rufen Sie EndScene auf.
Wenn eine Anwendung BeginScene aufruft und BeginScene True zurückgibt, dann muss die Anwendung EndScene aufrufen. Die empfohlene Aufrufabfolge sollte folgendermaßen aussehen:
if Canvas.BeginScene then try Canvas.xxx //drawing image operations ... finally Canvas.EndScene; end;
Jedes Mal, wenn das TCanvas-Objekt BeginScene aufruft und BeginScene True zurückgibt, wird der Wert der Eigenschaft BeginSceneCount um eins erhöht. Jedes Mal, wenn das TCanvas-Objekt EndScene aufruft, wird der Wert der Eigenschaft BeginSceneCount um eins verringert. BeginScene stellt mit BeginSceneCount sicher, dass für das TCanvas-Objekt gleichzeitig immer nur ein initialisierter Zeichnenvorgang ausgeführt wird.
TCanvas
und alle Unterklassen unterstützen Multithread-fähige Umgebungen, die simultane Ausführung von Canvas-Instanzen wird aber nicht unterstützt. Das bedeutet, dass die Ausführung des Codes in diesem BeginScene...EndScene
-Abschnitt jeden anderen Thread blockiert, der versucht, das Zeichnen zu verarbeiten (einschließlich Zeichnen in andere Zeichenbereiche), wenn ein Canvas BeginScene
aufruft. Halten Sie BeginScene...EndScene
-Blöcke so kurz wie möglich, um das Blockieren anderer Threads zu vermeiden.