Laden...

Kleines Problem mit Geometry und Polygon

Erstellt von 7.e.Q vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.751 Views
7.e.Q Themenstarter:in
925 Beiträge seit 2004
vor 13 Jahren
Kleines Problem mit Geometry und Polygon

Hi Leute,

ich hab hier 'n kleines Problem mit 'nem Polygon:

in einem Grid-Control mit variabler Größe (mit Griffen dran zum Größe Ändern) ist ein Polygon drin, genauer gesagt ein Dreieck. Dieses Dreieck soll sich an der Größe des übergeordneten Grid orientieren, sprich, die drei Eckpunkte sollen auch drei der vier Eckpunkte des Grids sein. Der Punkt links oben ist natürlich einfach 0,0. Die anderen Eckpunkte haben bei mir aktuell jeweils die X- bzw. Y-Komponente 1. Das ganze Polygon hat die Eigenschaft Stretch auf Fill gesetzt, was dazu führt, dass es optisch (!) schon einmal so aussieht, wie ich es gerne hätte.

Mein Problem ist aber, dass ich an anderer Stelle die Eigenschaft RenderedGeometry verwenden will. Sie liefert mir aber nicht die Geometry der visuellen Darstellung zurück (vergrößertes Dreieck), sondern die des original Dreiecks mit der Kantenlänge 1. Ich benötige aber leider ersteres.

Wie bekomme ich also von einer durch Stretch = Fill angepassten Shape ein Geometry Objekt, das der modifizierten Shape entspricht und nicht dem Original?

Danke

Grüße,
Hendrik

7.e.Q Themenstarter:in
925 Beiträge seit 2004
vor 13 Jahren

Okay...

hab's mal wieder selber gelöst. Und zwar indem ich eine eigene Triangle-Shape implementiert hab. Die jeweiligen Punkte werden darin anhand der Height- und Width-Property festgelegt.

Um nun ein Dreieck zu erhalten, was sich der Größe seines Containers anpasst, muss ich die Width- und Height-Property des Triangle-Objekts an ActualWidth und ActualHeight des Containers binden.

Funktioniert bestens; RenderedGeometry hat nun die korrekten Abmaße.

ActualHeight und ActualWidth der übergeordneten FrameworkElement-Klasse konnte ich nicht verwenden. Diese haben sich zwar beim Vergrößern des Containers automatisch korrekt angepasst. Beim Verkleinern des Containers blieben sie jedoch auf ihrem alten Wert. Ich konnte das Dreieck also größer, aber nicht wieder kleiner machen. Wenn dazu vielleicht noch jemand was sagen kann, dann danke ich schon mal im Voraus.

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

kleiner Tipp: Eine Zeichnung wäre eine große Hilfe um leichter zu verstehen was das Ziel sein soll 😉

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

7.e.Q Themenstarter:in
925 Beiträge seit 2004
vor 13 Jahren

Okay, 'ne Zeichnung...

So sieht das aus, wenn ich in der Triangle-Class in der überladenen Property DefiningGeometry (aus der abstrakten Shape) mit den ActualWidth und ActualHeight Properties der Shape arbeite.

Stattdessen arbeite ich da jetzt mit Width und Height, außerhalb gebunden an ActualHeight und -Width des Containers.

Die Frage ist, warum ActualHeight und ActualWidth der Shape (HorizontalAlignment und VerticalAlignment beide = Stretch) nicht wieder verkleinert werden, wenn sich der umgebende Container verkleinert.

//edit: vielleicht noch ein bisschen zu abstrakt dargestellt... Das grüne Dreieck ist ein Shape-Objekt (von mir abgeleitete Klasse Triangle). Der Rahmen außen rum mit den Griffen ist ein Border und ein paar andere Objekte. Jedenfalls ist der Container für das Triangle-Shape ein Border.