skiasharp xamarin 形式:缩放位图上的抗锯齿效果不佳

问题描述

我正在 Xamarin Forms 中使用 SkiaSharp 绘制位图。抗锯齿效果很差,我想知道如何改进。

源位图具有抗锯齿功能显示在附加图像的左侧。右半部分显示了 Android 设备屏幕截图的一部分。

Source and displayed bitmaps

在左侧部分,请注意锯齿是规则的 - 向上有一点深色羽化,向下有一点浅色羽化,所有这些都是统一的。在右侧,我们仍然可以看到羽化,但它在双宽像素和单宽像素之间交替。

绘制位图时

canvas.DrawBitmap(bmpSrc,rectSrcRight,rectDest,paint);

我已经尝试将 Paint IsAntialiasing() 设置为 true 和 false。无显着差异。

在此示例中,源图像高 61 像素,Android 图像高 102。

我是不是期望太高了?

解决方法

您可以尝试使用以下代码:

SKPaint paint = new SKPaint
{
     IsAntialias = true,FilterQuality = SKFilterQuality.High
};
canvas.DrawBitmap(bmpSrc,rectSrcRight,rectDest,paint);

虽然 IsAntialias 对位图不起作用,但我也添加了它。如果你想不断地绘制位图,它会占用更多的内存。

如果您有更好的方法使其工作并且不占用更多内存,请在此处分享讨论。