我在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”,但似乎它不起作用。
那么,我该如何解决这个问题呢? 谢谢!
答案 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 pixels
和96dpi
的图片,这个适用于我。
@ 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
尝试适应显示器分辨率,您应该能够将Width
和Height
设置为文件的原始尺寸并使用{ {1}}。这对我有用。
答案 4 :(得分:0)
如果要显示原始大小的图像,但不知道图像大小,我认为最好的方法是将图像设置为UIElement的背景。像这样:
<Button>
<Button.Background>
<ImageBrush ImageSource="/images/user_add.png" Stretch="None"/>
</Button.Background>
</Button>