Laden...

Silverlight Button Styling: Zeichen mit Path -> Abhängigkeit der Breite wie zu lösen?

Erstellt von 1nf1n1ty vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.283 Views
1nf1n1ty Themenstarter:in
286 Beiträge seit 2007
vor 12 Jahren
Silverlight Button Styling: Zeichen mit Path -> Abhängigkeit der Breite wie zu lösen?

Hallo zusammen,

ich brauche einen Button, der die Form eines Pfeils hat (Fünfeck), so wie man es manchmal bei solchen Brotkrumennavigationen findet. Ich habe dies nun mit Hilfe von Styles und eines Pfads gelöst, habe nun aber das Problem dass der Neigungswinkel des Pfeils immer gleich sein soll, die Breite des gesamten Buttons aber wiederum abhängig von der festgelegten Breite sein soll und demnach ein Teil der Path-Elemente ja breiter werden müsste.

Ich kann mir gerade nicht vorstellen, dass das über ein Binding funktionieren kann, da Point von LineSegment hier Koordinaten verlangt.

Folgendes habe ich bereits fertig:


<Path Canvas.Left="0" Canvas.Top="0" Stroke="blue" StrokeLineJoin="Round" StrokeThickness="2" Fill="LightBlue" Opacity="0.5">						
    <Path.Data>
        <PathGeometry>
            <PathFigure StartPoint="0,0" IsClosed="true">
                <LineSegment Point="79,0" />
                <LineSegment Point="90,15"/>
                <LineSegment Point="79,30"/>
                <LineSegment Point="0,30"/>
            </PathFigure>
	</PathGeometry>
    </Path.Data>
</Path>

Die Gesamtbreite des Buttons war beim Entwurf 90 Pixel. Vergrößere ich den Button auf 100 Pixel ist der Button zwar 100 Pixel Breit, gezeichnet werden aber nur die ersten 90.

Wie löst man sowas? Ich bin für Hilfe sehr dankbar.

Viele Grüße
1nf1n1ty

6.911 Beiträge seit 2009
vor 12 Jahren

Hallo 1nf1n1ty,

dass der Neigungswinkel des Pfeils immer gleich sein soll, die Breite des gesamten Buttons aber wiederum abhängig von der festgelegten Breite

wenn die Höhe auch gleich bleiben soll, so heißt das, dass der Pfeil immer gleich groß sein soll. Aus deiner weiteren Beschreibung lese ich aber heraus, dass die Breite des Pfeils sich auch ändern soll. Was nun? Am besten wäre ein Bild, das zeigt wie du dir es vorstellst (Handskizze, o.ä.).

Sollte letzteres der Fall sein, so kannst du das über eine ScaleTransform lösen, indem einfach in x-Richtung entsprechend skaliert wird.
Obs automatisch geht wenn du den Pfeil in eine ViewBox legst und diese wiederum in den Button weiß ich nicht, aber das wäre zu probieren.

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!"

1nf1n1ty Themenstarter:in
286 Beiträge seit 2007
vor 12 Jahren

Hallo gfoidl,

Bei änderung der Breite soll der Teil für die Darstellung des Inhalts größer werden. Die Höhe spielt (erstmal) für mich keine Rolle, da diese fest sein wird. Ich habe mal eine Skizze gemacht die verdeutlicht was ich meine.

Das mit der ViewBox hatte ich ganz vergessen. Ich dachte die gibt/gab es nur unter WPF, aber das könnte ich ja dann nochmal ausprobieren.

Vielen Dank schonmal.

6.911 Beiträge seit 2009
vor 12 Jahren

Hallo 1nf1n1ty,

jetzt verstehe ich wie du es meinst. Ein Bild sagt mehr als 1000 Worte stimmt wieder einmal.

Mach den Pfeil nicht aus einem Stück, sondern aus 2. Einmal das "Rechteck" und einaml nur die Pfeilspitze und pack beide in ein StackPanel.
Für den rechteckigen Teil kannst du ja ein Control nehmen für das sich die Breite leicht angegeben lässt. Hier z.B. könnte auch eine Textbox mit einer Border genommen werden.

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!"