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.
- Tipp: Beachten Sie bitte, dass der Aufruf von BeginScene in der Ereignisbehandlungsroutine OnPaint wirkungslos ist, weil BeginScene vor der Ausführung der Ereignisbehandlungsroutine OnPaint aufgerufen wird. Damit wird sichergestellt, dass das Zeichnen immer in OnPaint ausgeführt wird, ohne dass zusätzlicher und möglicherweise unerwarteter Code zum Zeichnen verwendet werden muss.
- Hinweis:
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 diesemBeginScene...EndScene
-Abschnitt jeden anderen Thread blockiert, der versucht, das Zeichnen zu verarbeiten (einschließlich Zeichnen in andere Zeichenbereiche), wenn ein CanvasBeginScene
aufruft. Halten SieBeginScene...EndScene
-Blöcke so kurz wie möglich, um das Blockieren anderer Threads zu vermeiden.