【问题标题】:Converting String to Stream将字符串转换为流
【发布时间】:2018-01-03 05:18:21
【问题描述】:

所以我正在尝试为我的 UWP 应用从 Windows.UI.Input.Inking 序列化和反序列化 IReadOnlyList<InkStroke>,并且我使用以下代码序列化数据:

var stream = new InMemoryRandomAccessStream();
await canvas.InkPresenter.StrokeContainer.SaveAsync(stream);
await stream.FlushAsync();

var buffer = new byte[stream.Size];
await stream.AsStream().ReadAsync(buffer, 0, buffer.Length);
return Convert.ToBase64String(buffer);

如何反序列化此字符串以创建可在StrokeContainer.LoadAsync() 方法中使用的IInputStream(或IRandomAccessStream)?

【问题讨论】:

    标签: c# .net uwp windows-10-universal


    【解决方案1】:

    你可以使用下面的和平代码....

    byte[] bytes = Convert.FromBase64String(stringinput);
    MemoryStream stream = new MemoryStream(bytes);
    IInputStream is=stream.AsRandomAccessStream(); //It will return an IInputStream object
    

    【讨论】:

    • 这里不需要Encoding.UTF8.GetBytes - 你需要Convert.FromBase64String,考虑到字符串的创建方式。
    【解决方案2】:

    试试this:

    byte[] data = Convert.FromBase64String(encodedString);
    InMemoryRandomAccessStream inputStream = new InMemoryRandomAccessStream();
    await inputStream.WriteAsync(data.AsBuffer());
    inputStream.Seek(0);
    await canvas.InkPresenter.StrokeContainer.LoadAsync(inputStream);
    

    【讨论】:

    • AsBuffer 方法在 UWP 应用中似乎不可用,因为它使用 System.Runtime.InteropServices.WindowsRuntime 命名空间。
    • 您可以将System.Runtime.WindowsRuntime 引用添加为NuGet package。我刚刚试过了
    猜你喜欢
    • 2014-06-25
    • 2015-11-18
    • 1970-01-01
    • 2014-11-15
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多