Сохранение холста SkiaSharp с растровым изображением с помощью рисования пальцами

#xamarin #xamarin.forms #xamarin.android #skiasharp

#xamarin #xamarin.forms #xamarin.android #skiasharp

Вопрос:

Я пытаюсь рисовать на растровом изображении, а затем необходимо сохранить обновленный рисунок

до сих пор мне удавалось получить изображение на холсте, а также я могу рисовать на растровом изображении, но проблема в том, что при экспорте потока я не мог видеть свой рисунок, я получаю только растровый поток

Вот код, который я реализовал до сих пор

Глобальная переменная

  private SKBitmap sKBitmap;
  

Конструктор

                 using (Stream stream = ImageDataStream)
                {
                    sKBitmap = SKBitmap.Decode(stream);
                }
  

Недействительная поверхность

  private void OnCanvasViewPaintSurface(object sender, SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs args)
    {
        globalSurface = args.Surface;
        SKCanvas canvas = globalSurface.Canvas;
        SKImageInfo info = args.Info;
        canvas.Clear();
        if (sKBitmap != null)
        {
            canvas.DrawBitmap(sKBitmap, info.Rect, BitmapStretch.Uniform);
        }

        foreach (SKPath path in completedPaths)
        {
            canvas.DrawPath(path, paint);
        }

        foreach (SKPath path in inProgressPaths.Values)
        {
            canvas.DrawPath(path, paint);
        }
    }
  

Код сохранения холста

 using (SKImage image = SKImage.FromBitmap(sKBitmap))
            {
                SKData data = image.Encode();
                var imageBytes = data.ToArray();
            }
  

при сохранении я получаю исходное изображение, а не обновленное с рисунком, не уверен, что неправильно я с этим делаю

Комментарии:

1. вы сохраняете изображение, а не холст. Объект SKSurface имеет метод моментального снимка, который вы можете вызвать для захвата всего холста.

2. @Jason Я попробовал, чтобы приложение завершило работу с этим методом, и я следую learn.microsoft.com/en-us/xamarin/xamarin-forms/user-interface /…

3. «получить сбой» не является полезным описанием. Какая конкретная строка кода вызывает сбой? Что является исключением?

4. @Jason спасибо за подсказку по снимку, я понял свою ошибку, и этот снимок сработал для меня, большое вам спасибо