Ich möchte Bild innerhalb Canvas haben und es an das Fenster anpassen. Wenn die Leinwand leer ist, funktioniert sie gut (die Größe der Leinwand wird innerhalb des Fensters geändert), aber wenn ich Bild hinzufüge, passt die Leinwand nicht mehr zu Fenster, obwohl ich Stretch = "Uniform" auf das Bild angewendet habe. Ich illustriere dieses Verhalten unten. Die Verwendung der Leinwand ist leider eine Voraussetzung, da ich Formen darüber zeichne. Irgendwelche Ideen bitte?Stretch Image in Canvas
Gut
<Window x:Class="ImageCropper.Window3"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window3" Height="300" Width="300">
<Border BorderThickness="3" BorderBrush="Red">
<Canvas Background="Blue">
</Canvas>
</Border>
</Window>
Bad
<Window x:Class="ImageCropper.Window3"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window3" Height="300" Width="300">
<Border BorderThickness="3" BorderBrush="Red">
<Canvas Background="Blue">
<Image Source="asd.png" Stretch="Uniform" />
</Canvas>
</Border>
</Window>
Ihr Bild ist größer als die Fläche, Swap-Leinwand für ViewBox oder da es sieht aus wie es gerade verwendet wird, ist als ein Hintergrund, warum nicht einfach als Border.Background mit einem ImageBrush verwenden? –
Ich habe versucht, Bild mit ViewBox zu verpacken, aber es hilft nicht und Border ist nur zur Veranschaulichung in dieser Frage, ich verwende es normalerweise nicht. Bild ist leider nicht nur Hintergrund. – user1121956
Sie haben also die Leinwand für Viewbox verlassen und Viewbox [stretch] (https://msdn.microsoft.com/en-us/library/system.windows.media.stretch%28v=vs.110%29.aspx) auf gesetzt Uniform oder Uniform zu füllen? Das sollte gut funktionieren, denke mal, wir brauchen vielleicht ein realeres Beispiel dafür, was du erreichen willst. –