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”,但似乎不起作用。
那么,我该如何解决这个问题呢? 谢谢你!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这里是类似的问题。一般设置
Stretch="None"
就足够了。在元数据中设置图像的 DPI 也非常重要。我花了很长时间才弄清楚如果图像的 DPI 与显示器的 DPI(通常为 96)不同,WPF 将自动调整图像大小,因为它尝试独立于 DPI 。
编辑
MSDN 链接已损坏,以下是新链接:
MSDN 博客 - 模糊位图。让我们保留旧链接以用于 archive.org,以防新链接也停止工作。
Here is a similar question. Generally setting
Stretch="None"
is enough.It is also very important what DPI has the image set in metadata. It took me quite a while before figuring out that if the image's DPI is different from the monitor's DPI (usually 96), WPF will automatically resize the image, as it tries to be DPI-independent.
EDIT
The MSDN link is broken, here is the new link:
MSDN Blog - Blurry Bitmaps. Let's keep the old link around to be used for archive.org, in case the new link stops working also.
尝试不指定宽度或高度,而是像这样使用它:
Try not specifying width or height, use it like this instead:
这个适用于我,适用于
600x800 像素
和96dpi
的图像。@rishad2m8如果尺寸未知,可以首先使用 https://msdn.microsoft.com/en-us/library/system.drawing.image.size(v=vs.110).aspx 我猜。
This one works for me, for an image with
600x800 pixels
and96dpi
.@rishad2m8 If size is unknown one can detect the size first with https://msdn.microsoft.com/en-us/library/system.drawing.image.size(v=vs.110).aspx I'd guess.
添加到 Paya 的答案:为了补偿
WPF
尝试适应显示器分辨率,您应该能够将Width
和Height
设置为文件的原始尺寸并使用Stretch="Fill"
。这对我有用。Adding to Paya's answer: to compensate
WPF
's attempt to adapt to the monitors resolution you should be able to set theWidth
andHeight
to the file's original dimensions and useStretch="Fill"
. This worked for me.如果你想以原始大小显示图像,但不知道图像大小,我认为最好的方法是将图像设置为 UIElement 的背景。像这样:
If you want to display the image with original size, but don't know the image size, I think the best way is to set the image as background of UIElement. Like this: