在xaml中调整图像大小而不会降低质量

时间:2013-10-10 17:10:29

标签: c# image xaml

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

enter image description here

我制作了这个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" />

我得到了这个结果

enter image description here

如何更顺利地调整大小?

3 个答案:

答案 0 :(得分:76)

在您的图片上加入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" />

答案 1 :(得分:49)

RenderOptions.BitmapScalingModeImage设置.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. 线性 - 使用线性位图缩放,这比HighQuality模式更快,但产生的输出质量较低。

     

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

     

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

     

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

答案 2 :(得分:2)

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

没有此设置:

<Image x:Name="InstrumentImage" />

With BitmapScalingMode

使用此设置:

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

Without BitmapScalingMode

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