Ich habe ein Problem mit der Anzeige von Bildern in WPF.
Hier ist mein Code:
<Button HorizontalAlignment="Left" Grid.Column="1" Grid.Row="5" Margin="0,5">
<Button.Content>
<StackPanel Orientation="Horizontal" Margin="10,0">
<Image Source="/images/user_add.png" Stretch="None" HorizontalAlignment="Center" VerticalAlignment="Center" Width="24" Height="24" />
<TextBlock Text="添加" />
</StackPanel>
</Button.Content>
</Button>
Ich habe ein Bild mit der Originalgröße 32 * 32, aber wenn ich den obigen Code ausführe, wird das Bild gestreckt, um den gesamten Raum über seine Originalgröße hinaus auszufüllen. Ich habe auch die "Stretch" -Eigenschaft auf "None" gesetzt, aber es scheint, dass es nicht funktioniert.
Wie kann ich dieses Problem beheben? Vielen Dank!
Hier ist eine ähnliche Frage. Grundeinstellung Stretch="None"
ist genug.
Es ist auch sehr wichtig, welche DPI das Bild in Metadaten gesetzt hat. Es hat eine Weile gedauert, bis ich herausgefunden habe, ob sich die DPI des Bildes von der DPI unterscheidet DPI des Monitors (normalerweise 96), WPF ändert die Bildgröße automatisch, da versucht wird, DPI-unabhängig zu sein .
<Image Source="Images/Background.png" UseLayoutRounding="True" SnapsToDevicePixels="True" Width="600" Height="800" Stretch="Fill" />
Dieser arbeitet für mich, für ein Bild mit 600x800 pixels
und 96dpi
.
@ rishad2m8 Wenn die Größe unbekannt ist, kann die Größe zuerst mit https://msdn.Microsoft.com/en-us/library/system.drawing.image.size (v = vs. 110) .aspx Ich würde raten.
Versuchen Sie, keine Breite oder Höhe anzugeben. Verwenden Sie stattdessen Folgendes:
<Image Source="/images/user_add.png" Stretch="None" HorizontalAlignment="Center" VerticalAlignment="Center" />
Zur Antwort von Paya hinzufügen: Um den Versuch von WPF
zu kompensieren, sich an die Bildschirmauflösung anzupassen, sollten Sie in der Lage sein, Width
und Height
auf die ursprünglichen Abmessungen der Datei einzustellen und Stretch="Fill"
. Das hat bei mir funktioniert.
Wenn Sie das Bild in Originalgröße anzeigen möchten, aber die Bildgröße nicht kennen, ist es meiner Meinung nach am besten, das Bild als Hintergrund für UIElement festzulegen. So was:
<Button>
<Button.Background>
<ImageBrush ImageSource="/images/user_add.png" Stretch="None"/>
</Button.Background>
</Button>