J'ai un problème d'affichage d'images dans WPF.
Voici mon 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>
J'ai une image de taille originale 32 * 32, mais lorsque j'ai exécuté le code ci-dessus, l'image va s'étendre pour remplir tout l'espace, au-delà de sa taille d'origine. J'ai également défini la propriété "Stretch" sur "None", mais il semble que cela ne fonctionne pas.
Alors, comment puis-je résoudre ce problème? Merci!
Ici est une question similaire. Réglage général Stretch="None"
est assez.
Il est également très important que le DPI définisse l'image dans les métadonnées. Il m'a fallu un certain temps avant de comprendre que si le DPI de l'image était différent de celui du moniteur de DPI (généralement 96), WPF redimensionnera automatiquement l'image, car il essaie d'être indépendant de DPI .
<Image Source="Images/Background.png" UseLayoutRounding="True" SnapsToDevicePixels="True" Width="600" Height="800" Stretch="Fill" />
Celui-ci fonctionne pour moi, pour une image avec 600x800 pixels
et 96dpi
.
@ rishad2m8 Si la taille est inconnue, vous pouvez tout d'abord la détecter avec https://msdn.Microsoft.com/en-us/library/system.drawing.image.size (v = vs.110) .aspx Je suppose.
Essayez de ne pas spécifier largeur ou hauteur, utilisez-le comme ceci:
<Image Source="/images/user_add.png" Stretch="None" HorizontalAlignment="Center" VerticalAlignment="Center" />
Ajout à la réponse de Paya: pour compenser la tentative de WPF
de s’adapter à la résolution des moniteurs, vous devriez pouvoir définir les paramètres Width
et Height
aux dimensions originales du fichier et utiliser Stretch="Fill"
. Cela a fonctionné pour moi.
Si vous souhaitez afficher l'image avec la taille d'origine, mais que vous ne connaissez pas la taille de l'image, le meilleur moyen consiste à définir l'image en tant qu'arrière-plan de UIElement. Comme ça:
<Button>
<Button.Background>
<ImageBrush ImageSource="/images/user_add.png" Stretch="None"/>
</Button.Background>
</Button>