AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi [FMX] FillPolygon+DrawPolygon und Transparenzen
Thema durchsuchen
Ansicht
Themen-Optionen

[FMX] FillPolygon+DrawPolygon und Transparenzen

Ein Thema von Medium · begonnen am 4. Apr 2018 · letzter Beitrag vom 5. Apr 2018
 
Medium

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

[FMX] FillPolygon+DrawPolygon und Transparenzen

  Alt 4. Apr 2018, 15:30
Huhu DP,

ich spiele aktuell mit meinem frisch erworbenem Delphi mit FMX herum. Ich versuche gerade unsere internen Komponenten zu portieren, und will sie dabei natürlich gleich auf die neuen Möglichkeiten aufbohren.

Derzeit versuche ich unser Symbol für Ventile (einfach zwei Dreiecke die sich an einer Spitze berühren) umzusetzen - abgeleitet von TShape. Dabei jetzt folgendes Problem:
Die Eigenschaft "Opacity" scheint so erstmal nichts zu machen. Man muss scheinbar selbst in seiner Paint-Methode dafür sorgen, dass der Wert beachtet wird und ihn an seine Canvas.Draw*-Aufrufe weitergeben. So weit kein Problem.
Es wird aber eines, wenn man ein Polygon (in diesem Fall sogar eines, dass sich selbst durchdringt) mit Rand und Füllung haben will - insbesondere dann, wenn der Rand dicker als 1px ist und man Transparenz sauber unterstützen möchte.

Normal ist ja: Erst den Fill zeichnen, und dann die Kontur "drüberjauchen". Das geht auch, solange keine Transparenz dabei ist. Mit dieser jedoch sieht man im Ergebnis, dass der Fill bis zur halben Dicke des Strokes reicht, da dieser ja nun auch transparent ist. Siehe Bild im Anhang. (Was dagegen sauber klappt ist der Kreuzungsbereich des Strokes. Sehr cool schon mal!)

Das Polygon ist definiert als:
Delphi-Quellcode:
p: TPolygon;
p[0] := PointF(0, 0);
p[1] := PointF(Width, 0);
p[2] := PointF(0, Height);
p[3] := PointF(Width, Height);

Ich hätte aber gerne, dass der Fill eben gerade nur bis zum inneren Rand des Strokes reicht! Skalieren des Polygons für den Fill fällt leider mit Selbstdurchdringung als Option flach. Gibt es dafür eine schöne Lösung?
Angehängte Grafiken
Dateityp: png Ventil.png (11,2 KB, 28x aufgerufen)
"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
 


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 08:07 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