InkManager.SaveAsync(IOutputStream) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
注意
对于使用可扩展应用程序标记语言 (XAML) 的通用 Windows 应用,建议使用 InkPresenter 和 InkCanvas 控件,而不是 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) 对象。
返回
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) 是最紧凑的持久墨迹表示形式。 它可以嵌入在二进制文档格式中,也可以直接放置在剪贴板上,同时保留各种墨迹属性,如压力、宽度、颜色、倾斜、扭曲等。