SKPictureRecorder的结构

时间:2018-04-06 05:28:26

标签: xamarin xamarin.forms skia skiasharp

我正在尝试使用SkiaSharp的SKPictureRecorder在SKCanvas中绘制路径。图像未保存在磁盘中。请找到以下代码供您参考。

SKPictureRecorder record = new SKPictureRecorder();
SKCanvas tempCanvas= record.BeginRecording(new SKRect(0,0,640,480));
tempCanvas.Clear(SKColors.White);

// set up drawing tools
using (var paint = new SKPaint())
{
    paint.IsAntialias = true;
    paint.Color = new SKColor(0x2c, 0x3e, 0x50);
    paint.StrokeCap = SKStrokeCap.Round;

    // create the Xamagon path
    using (var path = new SKPath())
    {
        path.MoveTo(71.4311121f, 56f);
        path.CubicTo(68.6763107f, 56.0058575f, 65.9796704f, 57.5737917f, 64.5928855f, 59.965729f);
        path.LineTo(43.0238921f, 97.5342563f);
        path.CubicTo(41.6587026f, 99.9325978f, 41.6587026f, 103.067402f, 43.0238921f, 105.465744f);
        path.LineTo(64.5928855f, 143.034271f);
        path.CubicTo(65.9798162f, 145.426228f, 68.6763107f, 146.994582f, 71.4311121f, 147f);
        path.LineTo(114.568946f, 147f);
        path.CubicTo(117.323748f, 146.994143f, 120.020241f, 145.426228f, 121.407172f, 143.034271f);
        path.LineTo(142.976161f, 105.465744f);
        path.CubicTo(144.34135f, 103.067402f, 144.341209f, 99.9325978f, 142.976161f, 97.5342563f);
        path.LineTo(121.407172f, 59.965729f);
        path.CubicTo(120.020241f, 57.5737917f, 117.323748f, 56.0054182f, 114.568946f, 56f);
        path.LineTo(71.4311121f, 56f);
        path.Close();

        // draw the Xamagon path
        tempCanvas.DrawPath(path, paint);
    }
}
SKPicture picture= record.EndRecording();
using (var image = SKImage.FromPicture(picture, new SKSizeI(640, 480)))
using (var data = image.Encode(SKEncodedImageFormat.Png, 80))
{
    // save the data to a stream
    using (var stream = File.OpenWrite("testing.png"))
    {
        data.SaveTo(stream);
    }
}

您可以查看代码的任何问题吗?

另外,请告诉我们SkiaSharp的SKPictureRecorder的结构。

提前致谢。

此致

Sabari

0 个答案:

没有答案