在Xamarin.Forms中将画布保存到设备内存

时间:2018-01-21 23:20:39

标签: c# xamarin canvas xamarin.forms save

我有来自bitMap(照片)的画布和我在Xamarin Forms中的手指画。我需要将它保存到存储设备(完全是照片卷,但可能只是设备的内存)。现在(在谷歌搜索几个小时后)我有这样的事情:

saveButt.Clicked += async(sender, args) =>
{
    var newSurface = SKSurface.Create(
        (int)canvasView.CanvasSize.Width,
        (int)canvasView.CanvasSize.Height,
        SKImageInfo.PlatformColorType,
        SKAlphaType.Premul);

    var canvas = newSurface.Canvas;
    if (photoBitmap != null)
    {
        canvas.DrawBitmap(photoBitmap, new SKRect(0, 0, (float) canvasView.Width, (float) canvasView.Height));
    }

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

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

    canvas.Flush();
    var snap = newSurface.Snapshot();
    var pngImage = snap.Encode();
};

我不知道如何访问内存或照片滚动以保存它。

@Edit 我尝试使用PCLStorage插件来保存它,现在它不会抛出任何异常或错误,但是当我查看所有文件夹时,我找不到任何带有这些名称的新文件夹或文件。

            var snap = newSurface.Snapshot();
            var pngImage = snap.Encode();
            IFolder rootFolder = FileSystem.Current.LocalStorage;
            IFolder folder = await rootFolder.CreateFolderAsync("MySubFolder",
                CreationCollisionOption.OpenIfExists);
            IFile file = await folder.CreateFileAsync("image.png",
                CreationCollisionOption.ReplaceExisting);
            using (Stream s = await file.OpenAsync(PCLStorage.FileAccess.ReadAndWrite))
            {
                pngImage.SaveTo(s);
            }

0 个答案:

没有答案