如何在没有抗锯齿的情况下显示缩放图像?

时间:2014-07-12 19:21:01

标签: c# xaml windows-8 direct2d sharpdx

问题

如何在不应用抗锯齿的情况下快速缩放XAML中的图像?

背景

我正在尝试将像素编辑器设置为Windows 8 XAML / C#应用程序。我正在使用c#/ XAML,因为我的大多数经验都是使用c#/ WPF。

  • 方法1: WriteableBitmap +图像控件。

    最初,我使用WriteableBitmap来存储和编辑图像。该图像显示在调整大小的XAML图像控件中。问题是由于抗锯齿,图像无法正确缩放。 (XAML似乎没有提供WPF中可用的BitmapScalingOptions)

    anti-aliased version

  • 方法2:重绘WriteableBitmap +图像控件。

    接下来我尝试编写自己的缩放,在这里我拍摄原始图像并写入更大的WriteableBitmap,以便缩放图像像素化。然后将缩放的图像呈现在XAML图像控件内。这个过程缓慢而且效率低下。

    enter image description here

  • 方法3: SharpDX + Direct2d ??

    我很确定SharpDx,SurfaceImageSource和Direct2d之间存在解决方案。事件仍然,我无法弄清楚如何在Windows.UI.Xaml图像控件中显示SharpDx.WIC.Bitmap,并且通常会在文档中丢失。

推荐的设置到底达到了什么目的?是否有可用的c#样本可能指向正确的方向?

1 个答案:

答案 0 :(得分:0)

我不知道你的意思是通过用鼠标调整大小来缩放它,或者只需点击一下按钮来自动缩放到预定的大小。

但你可以做的是使用一个图像面板,然后将其设置为image.Stretch = Stretch.Fill;,这样如果你覆盖并为图像面板的Resize事件创建一个方法,你的图像将采用这个尺寸填写图像面板。