问题描述
我正在 Xamarin Forms 中使用 SkiaSharp 绘制位图。抗锯齿效果很差,我想知道如何改进。
源位图具有抗锯齿功能,显示在附加图像的左侧。右半部分显示了 Android 设备屏幕截图的一部分。
在左侧部分,请注意锯齿是规则的 - 向上有一点深色羽化,向下有一点浅色羽化,所有这些都是统一的。在右侧,我们仍然可以看到羽化,但它在双宽像素和单宽像素之间交替。
绘制位图时
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
对位图不起作用,但我也添加了它。如果你想不断地绘制位图,它会占用更多的内存。
如果您有更好的方法使其工作并且不占用更多内存,请在此处分享讨论。