如何在 SkiaSharp 中使用双缓冲

Yau*_*how 5 xamarin.ios skia xamarin xamarin.forms skiasharp

我只是在玩 Xamarin Forms 和 SkiaSharp。我用 SkiaCanvas 创建了一个简单的 Xamarin 表单 ContentView。我的PaintSurface如下绘制一个简单的绿色圆圈:

    private void canvas_PaintSurface(object sender, SKPaintSurfaceEventArgs e)
    {
        var view = (SKCanvasView)sender;
        var canvas = e.Surface.Canvas;

        using(var paint = new SKPaint())
        {
            paint.Color = Colours.XamarinGreen;
            paint.Style = SKPaintStyle.Fill;
            paint.StrokeWidth = 1;
            paint.IsAntialias = true;

            canvas.DrawCircle((float)view.Width / 2.0f, (float)view.Height / 2.0f, (float)view.Height / 2.0f, paint);
        }
    }
Run Code Online (Sandbox Code Playgroud)

在我的测试应用程序中,当我通过拖动窗口的一角来调整窗口大小时,圆圈会闪烁。我想知道在 Xamarin.Forms 应用程序中使用 SkiaSharp 绘制图形时是否有一种简单的方法可以启用双缓冲?