WPF: как отобразить изображение в исходном размере?

У меня проблема с отображением изображений в WPF.

вот мой код:

<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>

У меня есть изображение с исходным размером 32*32, но когда я запустил вышеуказанный код, изображение растянется, чтобы заполнить все пространство, за пределами его исходного размера. Я также установил свойство "Stretch "в" None", но, похоже, оно не работает.

Итак, как я могу решить эту проблему? Спасибо!

4 ответов


здесь похожий вопрос. Как правило, параметр Stretch="None" достаточно.

также очень важно, что DPI имеет набор изображений в метаданных. мне потребовалось довольно много времени, прежде чем понять, что если DPI изображения отличается от DPI монитора (обычно 96),WPF автоматически изменит размер изображения, поскольку он пытается быть независимым от DPI.


попробуйте не указывать ширину или высоту, используйте ее следующим образом:

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

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

это работает для меня, для изображения с 600x800 pixels и 96dpi.

@rishad2m8 если размер неизвестен, можно сначала определить размер с помощью https://msdn.microsoft.com/en-us/library/system.drawing.image.size (v=против 110).aspx я бы предположил.


добавление к ответу Пайи: компенсировать WPFпопытка адаптироваться к разрешению мониторов вы должны иметь возможность установить Width и Height к исходным размерам файла и использовать Stretch="Fill". Это сработало для меня.