Structure of SKPictureRecorder


I am trying to use SKPictureRecorder of SkiaSharp to draw a path in the SKCanvas. The image is not saved in the disk. Please find the code below for your reference.

SKPictureRecorder record = new SKPictureRecorder();
SKCanvas tempCan= record.BeginRecording(new SKRect(0,0,640,480));

// 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);

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

Can you check any issue with the code?

Also please let us me know the structure of SKPictureRecorder of SkiaSharp.

Thanks in advance.



Sign In or Register to comment.