WPF:如何以原始大小显示图像?

时间:2010-06-16 17:09:08

标签: wpf image resize size

我在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”,但似乎它不起作用。

那么,我该如何解决这个问题呢? 谢谢!

5 个答案:

答案 0 :(得分:121)

Here是一个类似的问题。通常设置Stretch="None"就足够了。

DPI在元数据中设置图像也非常重要。在确定图像的DPI与显示器的DPI(通常为96)不同之前,我花了很长时间才发现{} {3}}

答案 1 :(得分:7)

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

对于包含600x800 pixels96dpi的图片,这个适用于我。

@ rishad2m8如果大小未知,我可以先用https://msdn.microsoft.com/en-us/library/system.drawing.image.size(v=vs.110).aspx来检测大小。

答案 2 :(得分:6)

尝试不指定宽度或高度,请改为使用它:

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

答案 3 :(得分:3)

添加到Paya的答案:为了补偿WPF尝试适应显示器分辨率,您应该能够将WidthHeight设置为文件的原始尺寸并使用{ {1}}。这对我有用。

答案 4 :(得分:0)

如果要显示原始大小的图像,但不知道图像大小,我认为最好的方法是将图像设置为UIElement的背景。像这样:

    <Button>
        <Button.Background>
            <ImageBrush ImageSource="/images/user_add.png" Stretch="None"/>
        </Button.Background>
    </Button>