55

我有这张图片(原始尺寸:256x256)

在此处输入图像描述

我做了这个 xaml 定义以在我的应用程序中显示图像

<Image Grid.Row="1" 
       Source="/MyProject;component/Images/happy.png" 
       Stretch="Fill" 
       Width="64" Height="64"  
       VerticalAlignment="Top" Margin="0,0,0,0" 
       HorizontalAlignment="Center" />

我得到了这个结果

在此处输入图像描述

如何进行更平滑的调整大小?

4

3 回答 3

112

包括RenderOptions.BitmapScalingMode="Fant"在您的图像中,如下所示:

<Image Grid.Row="1"
       Source="/MyProject;component/Images/happy.png"
       RenderOptions.BitmapScalingMode="Fant"
       Stretch="Fill"
       Width="64"
       Height="64"
       VerticalAlignment="Top"
       Margin="0,0,0,0"
       HorizontalAlignment="Center" />
于 2013-10-10T17:29:39.903 回答
63

为您的through设置RenderOptions.BitmapScalingMode属性:Image.xaml

<Image Grid.Row="1" RenderOptions.BitmapScalingMode="HighQuality" ... />

附加信息:

RenderOptions.BitmapScalingMode是一个基于质量缩放图像的属性。WPF 4.0 默认为Unspecified,表示LowQuality图像渲染。

但是为了确保图像在尺寸增加时仍然保持良好的质量,BitmapScalingMode 应该选择为HighQuality.

这是BitmapScalingMode枚举成员及其来自msdn的描述:

1. Fant - 使用非常高质量的 Fant 位图缩放,它比所有其他位图缩放模式慢,但产生更高质量的输出。

2. HighQuality - 使用高质量位图缩放,比 LowQuality 模式慢,但产生更高质量的输出。HighQuality 模式与 Fant 模式相同。

3. Linear - 使用线性位图缩放,比 HighQuality 模式更快,但产生的输出质量较低。

4.低质量 - 使用双线性位图缩放,比 HighQuality 模式更快,但产生的输出质量较低。LowQuality 模式与线性模式相同。

5. NearestNeighbor - 使用最近邻位图缩放,当使用软件光栅化器时,它提供优于 LowQuality 模式的性能优势。此模式通常用于放大位图。

6.未指定- 使用默认的位图缩放模式,即线性。

于 2013-10-10T17:29:27.450 回答
4

如上所述,该设置RenderOptions.BitmapScalingMode="HighQuality"会激活抗锯齿。我想为不知道什么是抗锯齿的用户提供一个示例。

没有这个设置:

<Image x:Name="InstrumentImage" />

使用 BitmapScalingMode

使用此设置:

<Image x:Name="InstrumentImage" RenderOptions.BitmapScalingMode="HighQuality" />

没有 BitmapScalingMode

在此处查看不同的选项:https ://docs.microsoft.com/en-us/dotnet/api/system.windows.media.bitmapscalingmode?view=netframework-4.8

于 2020-04-18T08:37:06.420 回答