Einzelnen Beitrag anzeigen

mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#3

AW: FMX 10.4.2 : TRoundrect.canvas.endscene Crash

  Alt 22. Mai 2021, 01:10
"SigRoundRectKunde.Repaint"... das stößt intern doch "verzögert/async" ein neuzeichnen an... da ist es keine gute Idee gleich danach weitere harte Canvas Zugriffe zu machen (Unter Windows könnte man da böse hinter das Repaint ein Application.ProcessMessages "zum warten" einfügen)

Code:
procedure TForm.bbSignatureKundeClearClick(Sender: TObject);
begin
    FreeandNil(SignatureKunde);
    SignatureKunde := TList<TSigCapRec>.Create;
    SigRoundRectKunde.Canvas.Clear(SigRoundRectKunde.Fill.Color);
    SigRoundRectKunde.Repaint;
    SigRoundRectKunde.canvas.BeginScene;
    SigRoundRectKunde.canvas.Clear(TAlphaColors.Gray);
    SigRoundRectKunde.canvas.EndScene; // Crash?
end;

aus meiner Sicht logischer wäre:
Code:
procedure TForm.bbSignatureKundeClearClick(Sender: TObject);
begin
    FreeandNil(SignatureKunde);
    SignatureKunde := TList<TSigCapRec>.Create;
    SigRoundRectKunde.canvas.BeginScene;
    SigRoundRectKunde.Canvas.Clear(SigRoundRectKunde.Fill.Color); // die Zeile macht aus meiner Sicht wenig Sinn, weil danach das ja nochmal fix mit grau gemacht wird
    SigRoundRectKunde.canvas.Clear(TAlphaColors.Gray);
    SigRoundRectKunde.canvas.EndScene;
    SigRoundRectKunde.Repaint;
end;
  Mit Zitat antworten Zitat