#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 спасибо за подсказку по снимку, я понял свою ошибку, и этот снимок сработал для меня, большое вам спасибо