InkManager.SaveAsync(IOutputStream) 方法

定义

注意

对于使用可扩展应用程序标记语言 (XAML) 的通用 Windows 应用,建议使用 InkPresenterInkCanvas 控件,而不是 InkManager

异步将 InkManager 管理的 InkStroke 集合中的所有 InkStroke 对象保存到指定的流中。

墨迹数据 (ISF) 元数据序列化为墨迹序列化格式,并嵌入到图形交换格式 (GIF) 文件中。

public:
 virtual IAsyncOperationWithProgress<unsigned int, unsigned int> ^ SaveAsync(IOutputStream ^ outputStream) = SaveAsync;
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncOperationWithProgress<uint32_t, uint32_t> SaveAsync(IOutputStream const& outputStream);
/// [Windows.Foundation.Metadata.RemoteAsync]
/// [Windows.Foundation.Metadata.Overload("SaveAsync")]
IAsyncOperationWithProgress<uint32_t, uint32_t> SaveAsync(IOutputStream const& outputStream);
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncOperationWithProgress<uint,uint> SaveAsync(IOutputStream outputStream);
[Windows.Foundation.Metadata.RemoteAsync]
[Windows.Foundation.Metadata.Overload("SaveAsync")]
public IAsyncOperationWithProgress<uint,uint> SaveAsync(IOutputStream outputStream);
function saveAsync(outputStream)
Public Function SaveAsync (outputStream As IOutputStream) As IAsyncOperationWithProgress(Of UInteger, UInteger)

参数

outputStream
IOutputStream

目标流。 IRandomAccessStream (要求可以改为指定 IOutputStream) 对象。

返回

IAsyncOperationWithProgress<UInt32,UInt32>

Windows.Foundation.IAsyncOperationWithProgress<unsigned int,unsigned int>

IAsyncOperationWithProgress<uint32_t,uint32_t>

保存的流的大小以及异步操作的状态(以发送的字节数表示)。 有关详细信息,请参阅 WriteAsync 方法。

实现

属性

示例

saveStrokes此示例中的 函数演示如何:

  • 显示文件保存屏幕,其中文件类型使用 FileSavePicker 对象限制为图形交换格式 (GIF) 格式。
  • 通过 OpenAsync 方法设置输出流。
  • 使用 InkManager 对象的 SaveAsync 方法 (inkManager) 将墨迹数据序列化为输出流,并将其嵌入图形交换格式 (GIF) 文件 (storageFile) 。
// Save all strokes owned by inkManager.
function saveStrokes()
{
    // Ensure that strokes exist before calling saveAsync.
    if (inkManager.getStrokes().size > 0)
    {
        // Set up the file save screen.
        var savePicker = Windows.Storage.Pickers.FileSavePicker();
        savePicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.picturesLibrary;
        savePicker.fileTypeChoices.insert("GIF with embedded ISF", [".gif"]);
        savePicker.defaultFileExtension = ".gif";

        // Set up the stream.
        var saveStream = null;

        // Asynchronously save the ink data to the stream.
        savePicker.pickSaveFileAsync().done(
        function (file)
        {
            if (null !== file)
            {
                file.openAsync(Windows.Storage.FileAccessMode.readWrite).then(
                    function (stream)
                    {
                        saveStream = stream;
                        return inkManager.saveAsync(saveStream);
                    }
                ).then(
                    function ()
                    {
                        return saveStream.flushAsync(); 
                    },
                    function (e) {
                        // Override the standard saveAsync error with our own.
                        throw new Error("saveAsync");
                    }
                ).done(
                    function ()
                    {
                        statusMessage.innerText = "Strokes saved as GIF with embedded ISF (.gif).";
                        saveStream.close();
                    },
                    function (e) {
                        statusMessage.innerText = "Save: " + e.toString();
                        // Close the stream if open.
                        if (saveStream) {
                            saveStream.close();
                        }
                    }
                );
            }
        }
    );
    }
    else
    {
        statusMessage.innerText = "No strokes to save.";
    }
}

注解

将元数据嵌入图形交换格式 (GIF) 文件中,可以在未启用墨迹的应用程序中查看墨迹,同时保持启用墨迹的应用程序的完全保真度。 此格式非常适合传输 HTML 文件中的墨迹内容,并使其可供墨迹和非墨迹应用程序使用。

注意

墨迹序列化格式 (ISF) 是最紧凑的持久墨迹表示形式。 它可以嵌入在二进制文档格式中,也可以直接放置在剪贴板上,同时保留各种墨迹属性,如压力、宽度、颜色、倾斜、扭曲等。

适用于

另请参阅