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

Per*_*man 1 antialiasing xamarin.forms skiasharp

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

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

源和显示的位图

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

绘制位图时

canvas.DrawBitmap(bmpSrc, rectSrcRight, rectDest, paint);
Run Code Online (Sandbox Code Playgroud)

我尝试将绘画 IsAntialiasing() 设置为 true 和 false。无显着差异。

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

我是不是期待太多了?

Jun*_*ang 5

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

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

虽然IsAntialias不适用于位图,但我也添加了它。如果要连续绘制位图,则会占用更多内存。

如果您有更好的方法让它工作并且不占用更多内存,请在这里分享讨论。