AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FMX Linie "wegzeichnen"

Ein Thema von Schorschi5566 · begonnen am 3. Jun 2012 · letzter Beitrag vom 7. Jun 2012
Antwort Antwort
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

AW: FMX Linie "wegzeichnen"

  Alt 4. Jun 2012, 06:32
Hallo Uwe,

heißt das, dass ClearRect in anderen Situationen funktionieren würde? Wie gesagt, in den Sourcen sieht das derzeit so aus:

In FMX.Canvas.D2D:
Delphi-Quellcode:
procedure TCanvasD2D.Clear(const Color: TAlphaColor);
begin
  FTarget.Clear(D2Color(Color, 1));
end;

procedure TCanvasD2D.ClearRect(const ARect: TRectF; const AColor: TAlphaColor);
begin
  FTarget.Clear(D2Color(AColor, 1));
end;
Sieht für mich so aus als ob ClearRect bisher unvollständig implementiert wurde (ARect müsste doch FTarget verändern, oder so). Im Interface ist allerdings ClearRect nicht vorhanden (hier zu lesen), wodurch bei mir der Verdacht entsteht, dass es nichtmal Emba so ganz verstanden hat.

Die Frage ist eigentlich ob zu erwarten ist, dass ClearRect in einer kommenden Version der FMX-Implementierung wie angegeben funktionieren wird oder ob man sich besser selbst darum kümmert und zu löschende Objekte in einer eigenen Objektliste mit entsprechenden Canvas-Objekten selbst verwaltet. Ich wollte zwar eigentlich keine komplette Layerverwaltung einbauen, aber wenn's nicht anders geht...

So wie Canvas.ClearRect dokumentiert ist, scheint es jedenfalls nicht zu funktionieren, weshalb ich noch eine Meldung in der QC machen werde, wenn mir niemand widerspricht.

Grüße,
Uwe
Uwe
"Real programmers can write assembly code in any language." - Larry Wall
Delphi programming rocks
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: FMX Linie "wegzeichnen"

  Alt 4. Jun 2012, 09:11
Ich kann mir gut vorstellen, dass ein ClearRect so wie auf den alten GDI Canvases überhaupt nicht funktionieren würde. Der einfachste Weg wäre da wohl ein Drüberzeichnen mit einem Rect, weil man für ein richtiges Clear potenziell ziemlich komplexe Geometrie-Bool'sche Operationen machen müsste. Ich nehme daher einfach mal an, dass die Methode ClearRect eher ein Relikt ist, dass jemand bei EMB eher unbedachterweise als Stub mit in den Code aufgenommen hatte, und sich nicht darüber im Klaren war, was das für einen Rattenschwanz nach sich ziehen könnte.

Letztlich ist es aber auch schon immer so gewesen: Der einzig "richtige" Weg gezeichnetes rückgängig zu machen ist, es erst überhaupt nicht zu zeichnen. XOR-Painting ist schon immer nur eine Krücke gewesen, die gerne aber aus Bequemlichkeit genutzt wurde, da es einem das Erstellen einer Painting-List erspart hat - oder zumindest eine History an Bitmaps für einfachstes Undo. Aber genau letztere sind der einzig richtige Weg wenn man die Funktion "zuvor gezeichnetes entfernen" braucht.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#3

AW: FMX Linie "wegzeichnen"

  Alt 4. Jun 2012, 18:02
Sieht für mich so aus als ob ClearRect bisher unvollständig implementiert wurde (ARect müsste doch FTarget verändern, oder so). Im Interface ist allerdings ClearRect nicht vorhanden (hier zu lesen), wodurch bei mir der Verdacht entsteht, dass es nichtmal Emba so ganz verstanden hat.
Die GDI+ und die Quartz-Implementation für Mac machen da wohl schon was - insofern hat Emba das wohl doch verstanden. Da D2D aber kein ClearRect anbietet (und OpenGL wohl auch nicht), wird das da wohl schwer zu implementieren sein. Es ist halt bei unterschiedlichen Plattformen immer die Frage: kleinster gemeinsamer Nenner oder Fake-Implementierung nicht unterstützter Funktionen.

Die Grafikkarte sollte aber schon schnell genug sein, um ein Clear und Neuzeichnen halbwegs schnell hinzukriegen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: FMX Linie "wegzeichnen"

  Alt 7. Jun 2012, 07:54
Ja, das geht schon flott genug, wenn man's halbwegs geschickt macht.

Vielen Dank für Eure Antworten. Hat, wie immer, weitergeholfen.


Grüße,
Uwe
Uwe
"Real programmers can write assembly code in any language." - Larry Wall
Delphi programming rocks
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz