FMX.Graphics.TCanvas.BeginScene

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

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 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.


Siehe auch