Benutzer mit den meisten Antworten
WPF: Canvas -> Elemente auf Bild malen

Frage
-
Hallo
Ich möchte quasi ein Bild als Canvas haben. Sprich, der Canvas ist immer auch nur so groß wie das Bild im Hintergrund.
Allerdings habe ich da einige Probleme bezüglich des Strecht Verhalten. Das ganze soll stets ein Seitenverhältnis 1:1:1:1 behalten.
Konstruktive Lösungsansätze sind erwünscht
Grüße
Antworten
-
Hallo,
fügst du vielleicht erst das Canvas und dann das Bild hinzu? Bei mir funktioniert alles, darum vermute ich mal das bei dir das Bild einfach das Image verdeckt.
Oder hast du vielleicht noch andere Attribute (Opacity, Visiblity, ...) gesetzt?PS: Ich habe unsere Antworten aus der anderen Frage heraus gelöscht.
Tom Lambert - C# MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert TZDEV Mittwoch, 19. November 2014 16:33
Alle Antworten
-
Hallo,
wenn ich dich richtig verstehe, hast du ein Image und ein Canvas Objekt. Beide sollen gleich groß sein und die Höhe soll stets der Breite entsprechen.Das die beiden Controls immer gleich groß sind kannst du über deren Alignment bzw. Stretch-Eigenschaften festlegen:
<Grid> <Image Stretch="Fill"/> <Canvas > </Canvas> </Grid>
Das das Element immer quadratisch ist, hängt nun davon ab, wie du die Größe ggf. ändern willst. Am Einfachsten wäre es natürlich, wenn du immer die Höhe und die Breite festlegst.
Du kannst jedoch auch die Breite/Höhe an die jeweils andere Eigenschaft binden:<Grid Width="{Binding ActualHeight, RelativeSource={RelativeSource Self}}">
Wenn du dagegen das Canvas immer so groß machen willst wie das Bild, dann geht das ebenfalls über Bindungen:<Canvas Width="{Binding ActualWidth, ElementName=img}" Height="{Binding ActualHeight, ElementName=img}" >
Je nachdem wie du die Stretch-Eigenschaft des Image-Controls gesetzt hast, passt sich nun auch das Canvas mit an.
Tom Lambert - C# MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
Hier gehörts rein:
Der Canvas ist nach deiner Lösung absolut unsichtbar. Heisst, auch Children, die ich auf dem Canvas erstelle sind nicht sichtbar und "MouseDown"-Event und co funktioniert ebenfalls nicht.
Wie umgehe ich das möglichst geschick?
-
Hallo,
fügst du vielleicht erst das Canvas und dann das Bild hinzu? Bei mir funktioniert alles, darum vermute ich mal das bei dir das Bild einfach das Image verdeckt.
Oder hast du vielleicht noch andere Attribute (Opacity, Visiblity, ...) gesetzt?PS: Ich habe unsere Antworten aus der anderen Frage heraus gelöscht.
Tom Lambert - C# MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert TZDEV Mittwoch, 19. November 2014 16:33