96 votes

WPF : Comment afficher une image à sa taille originale ?

J'ai un problème avec l'affichage des 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'exécute le code ci-dessus, l'image s'étire pour remplir tout l'espace, au-delà de sa taille originale. 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 !

125voto

Paya Points 2312

Ici est une question similaire. En général, le réglage Stretch="None" est suffisant.

Il est également très important de savoir quel DPI a été défini pour l'image dans les métadonnées. Il m'a fallu un certain temps avant de comprendre que si le DPI de l'image est différent du DPI du moniteur (généralement 96), WPF redimensionnera automatiquement l'image, car il essaie d'être indépendant de la DPI. .

7voto

audiomobster Points 1
<Image Source="Images/Background.png" UseLayoutRounding="True" SnapsToDevicePixels="True" Width="600" Height="800" Stretch="Fill" />

Celle-ci fonctionne pour moi, pour une image avec 600x800 pixels y 96dpi .

6voto

VoodooChild Points 6849

Essayez de ne pas spécifier la largeur ou la hauteur, utilisez-le plutôt comme ceci :

<Image Source="/images/user_add.png" Stretch="None" HorizontalAlignment="Center" VerticalAlignment="Center" />

4voto

Pour compléter la réponse de Paya, afin de compenser la tentative de WPF de s'adapter à la résolution de l'écran, vous devriez pouvoir définir la largeur et la hauteur aux dimensions originales du fichier et utiliser Stretch="Fill". Cela a fonctionné pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X