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

Nat*_*izz 45 c# xaml image

我有这个图像(原始大小: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" />
Run Code Online (Sandbox Code Playgroud)

我得到了这个结果

在此输入图像描述

我怎样才能更顺利地调整大小?

Dan*_*iel 83

包含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" />
Run Code Online (Sandbox Code Playgroud)

  • +1 用于命名`RenderOptions.BitmapScalingMode`。“NearestNeighbor”为我提供了最好的结果 (3认同)

Far*_*yev 51

设置RenderOptions.BitmapScalingMode你的财产Image通过.xaml:

   <Image Grid.Row="1" RenderOptions.BitmapScalingMode="HighQuality" ... />
Run Code Online (Sandbox Code Playgroud)

附加信息:

RenderOptions.BitmapScalingMode属性是基于质量来缩放图像的属性. WPF 4.0默认为Unspecified,指的是LowQuality图像渲染.

但是为了确保图像在大小增加时保持良好的质量,应选择BitmapScalingMode作为HighQuality.

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

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

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

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

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

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

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


Ben*_*Ben 7

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

如果没有这个设置:

<Image x:Name="InstrumentImage" />
Run Code Online (Sandbox Code Playgroud)

使用位图缩放模式

通过此设置:

<Image x:Name="InstrumentImage" RenderOptions.BitmapScalingMode="HighQuality" />
Run Code Online (Sandbox Code Playgroud)

没有位图缩放模式

请参阅此处的不同选项:https://learn.microsoft.com/en-us/dotnet/api/system.windows.media.bitmapscalingmode ?view=netframework-4.8