InkManager.SaveAsync(IOutputStream) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Nota
Para la aplicación universal de Windows con lenguaje de marcado de aplicación extensible (XAML), se recomienda usar InkPresenter y el control InkCanvas en lugar de InkManager.
Guarda de forma asincrónica todos los objetos InkStroke de la colección InkStroke que administra InkManager en la secuencia especificada.
Los datos de entrada de lápiz se serializan como metadatos de formato serializado de lápiz (ISF) e incrustados en un archivo de formato de intercambio de gráficos (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)
Parámetros
- outputStream
- IOutputStream
Flujo de destino. En su lugar, se puede especificar un objeto IRandomAccessStream (requiere IOutputStream).
Devoluciones
Windows.Foundation.IAsyncOperationWithProgress<unsigned int,unsigned int>
IAsyncOperationWithProgress<uint32_t,uint32_t>
Tamaño de la secuencia guardada y el estado de la operación asincrónica como el número de bytes enviados. Para obtener más información, vea Método WriteAsync .
Implementaciones
- Atributos
Ejemplos
La saveStrokes
función de este ejemplo muestra cómo:
- Muestra una pantalla de guardado de archivos en la que el tipo de archivo está restringido al formato de formato de intercambio de gráficos (GIF) mediante el objeto FileSavePicker .
- Configure un flujo de salida a través del método OpenAsync .
- Utilice el método SaveAsync de un objeto InkManager (
inkManager
) para serializar los datos de entrada de lápiz en un flujo de salida e insertarlos en un archivo de formato de intercambio de gráficos (storageFile
GIF).
// 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.";
}
}
Comentarios
La inserción de los metadatos en un archivo de formato de intercambio de gráficos (GIF) permite ver la entrada de lápiz en aplicaciones que no están habilitadas para entrada de lápiz, a la vez que se mantiene la fidelidad total para las aplicaciones habilitadas para entrada de lápiz. Este formato es ideal para transportar contenido de entrada de lápiz dentro de un archivo HTML y hacer que sea utilizable tanto por las aplicaciones de entrada de lápiz como por las que no son de lápiz.
Nota:
El formato serializado de lápiz (ISF) es la representación más compacta persistente de la entrada de lápiz. Se puede incrustar en un formato de documento binario o colocarse directamente en el Portapapeles, a la vez que conserva varias propiedades de entrada de lápiz, como presión, ancho, color, inclinación, giro, etc.
Se aplica a
Consulte también
- Interacciones de pluma y lápiz
- Introducción: Compatibilidad con la entrada de lápiz en la aplicación para UWP
- Ejemplo de análisis de lápiz (básico) (C#)
- Ejemplo de reconocimiento de escritura a mano de lápiz (C#)
- Guardar y cargar trazos de lápiz desde un archivo de formato serializado de lápiz (ISF)
- Guardar y cargar trazos de lápiz desde el Portapapeles
- Ejemplo de orientación y ubicación de la barra de herramientas de lápiz (básico)
- Muestra de orientación y ubicación de la barra de herramientas de lápiz (dinámica)
- Muestra de libro para colorear
- Muestra de notas familiares
- Ejemplo de entrada manuscrita (JavaScript)
- Ejemplo de entrada manuscrita simple (C#/C++)
- Ejemplo complejo de entrada manuscrita (C++)
- Ejemplo de análisis de entrada de lápiz