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

Posted

技术标签:

【中文标题】如何在没有抗锯齿的情况下显示缩放图像?【英文标题】:How to display scaled image without anti-aliasing? 【发布时间】:2014-09-03 04:27:41 【问题描述】:

问题

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

背景

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

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

方法二:重绘WriteableBitmap + Image控件。 接下来,我尝试编写自己的缩放比例,我将原始图像写入更大的 WriteableBitmap,以便缩放后的图像像素化。缩放后的图像随后显示在 XAML Image 控件中。此过程缓慢且效率低下。

方法 3: SharpDX + Direct2d ?? 我很确定 SharpDx、SurfaceImageSource 和 Direct2d 之间存在某种解决方案。事件仍然存在,我不太清楚如何在 Windows.UI.Xaml Image 控件中显示 SharpDx.WIC.Bitmap,并且通常会迷失在文档中。

为了达到我想要的目的,推荐的设置到底是什么?是否有可用的 c# 示例可以为我指明正确的方向?

【问题讨论】:

【参考方案1】:

我不知道您的意思是通过使用鼠标调整大小来缩放它还是只需单击按钮以自动缩放到预定大小。

但是您可以做的是使用图像面板,然后将其设置为image.Stretch = Stretch.Fill;,因此如果您为图像面板的 Resize 事件覆盖并创建一个方法,您的图像将采用填充大小图片面板。

【讨论】:

由于我上面提到的抗锯齿,这个方法不起作用。我会在我的问题中添加更多细节......

以上是关于如何在没有抗锯齿的情况下显示缩放图像?的主要内容,如果未能解决你的问题,请参考以下文章

bitmap缩放时抗锯齿

如何在没有抗锯齿的情况下在画布上绘制像素字体

在 iOS 中,如何在没有抗锯齿/插值的情况下绘制位图?

各种抗锯齿效果的记录

Firefox 没有抗锯齿缩放背景 svg

谷歌地图GroundOverlays默认情况下是不是具有抗锯齿功能?