![]() |
AW: Graph mit Graphics32 Darstellungsproblem
Crosspostings:
![]() |
AW: Graph mit Graphics32 Darstellungsproblem
Hi,
ist das nicht okay so? Ich hatte zuerst an einen Fehler meinerseits gedacht und daher hier nachgefragt. Nun scheint es sich aber (zumindest zum Teil) um ein Problem mit/in Graphics32 zu handeln, daher hab ich dort mal ein Issue aufgemacht. Tomy |
AW: Graph mit Graphics32 Darstellungsproblem
Das ist vollkommen okay.
Es ist für alle nur gut zu wissen, welche Lösungsvorschläge es schon gibt. Sonst kommen sie -wie hier- doppelt. Hast Du versucht, den Renderer zu tauschen? |
AW: Graph mit Graphics32 Darstellungsproblem
Ich selbst mache das nicht mit diesem TCanvas32, ich benutze den Renderer direkt. Auch für solche (ähnlichen) Polygonlinien. So ein Fehler ist mir nicht aufgefallen.
Hier meins:
Delphi-Quellcode:
procedure TGrafik._DrawLine(pts: TArrayOfFloatPoint; Color: TColor32; Filler: TCustomPolygonFiller);
var P: TPolygonRenderer32VPR; begin P := TPolygonRenderer32VPR.Create(FBitmap); try P.Color := Color; P.Filler := Filler; P.PolygonFS(pts); finally P.free; end; end; |
AW: Graph mit Graphics32 Darstellungsproblem
Sind die Polygonpunkte auch vllt zu eng nebeneinander. Springen sie vllt zurück oder ähnliches.
Ggf müssen die Punkte in der Linie etwas ausgedünnt werden. Also vllt weniger Punkte. |
AW: Graph mit Graphics32 Darstellungsproblem
|
AW: Graph mit Graphics32 Darstellungsproblem
Ich kann da nicht so viel sehen.
Aber ich sehe da nur etwas Falsches bei dicken Linien und vielen Punkten. Wäre auch ganz logisch. Bei dicken Linien bringen viele Punkte auch gar nichts, da man sie gar nicht auflösen kann. Sie verschwinden innerhalb der Linie. Vermutlich kommt der Algorithmus deshalb damit nicht klar. |
AW: Graph mit Graphics32 Darstellungsproblem
Über eine Änderung des Parameters Miter-Limit auf 0.1 (Standard 4.0) lässt sich das Problem beheben.
|
AW: Graph mit Graphics32 Darstellungsproblem
Hallo Tomy,
Bis das Problem beseitigt ist kannst du auch innerhalb der Datei GR32_VectorUtils in der Prozedur AddRoundedJoin den Aufruf AddMitered(...) durch:
Code:
ersetzen. Das löst das Problem indem keine Spitze mehr eingefügt wird und ist gleichzeitig etwas performanter als die Verwendung eines kleinen Miter Limits.
AddPoint(Delta * X1, Delta * Y1);
AddPoint(Delta * X2, Delta * Y2); Aktuell scheue ich noch davor das in der Original-Bibliothek einzusetzen, da Mattias, der Originalentwickler da nun auch aufmerksam drauf wurde und er es ganz sicher besser lösen kann. Da ich mir an der Problematik bereits vor ca. 9 Jahren schon mal die Zähne dran ausgebissen habe, werde ich da jetzt nicht wieder ein großes Fass aufmachen wollen. |
AW: Graph mit Graphics32 Darstellungsproblem
Hallo Christian,
nochmal vielen Dank an Dich und all die Anderen, die sich da auch den Kopf zerbrechen (und zerbrochen haben). Performance ist kein Thema, die Anwendung dümpelt so mit 5-7% CPU Last vor sich hin, so dass ich das erstmal mit dem Mitter-Limit mache. Gibt es eigentlich eine Doku zur 2.0 Alpha? Ich schwimme da etwas, nachdem das Zeichnen mit Outline.Grow nicht mehr ist … Grüße Tomy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 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