Also ich möchte eine Klasse, die eine IReadOnlyList<InkStroke>
von Windows.UI.Input.Inking
enthält, serialisieren, wie ich an einer UWP-App arbeite.Stream-Ausgabe zu String
Ich bin ein DataContractSerializer
mit meiner Klasse serialise, aber ich brauche die IReadOnlyList erste serialise, eine zu string
oder byte[]
, so dass es mit dem DataContractSerializer
serialisiert werden kann.
Das am besten geeignete Verfahren zur Herstellung des Strich von einem StrokeContainer
Speichern ist die StrokeContainer.SaveAsync()
Methode, die in einem IOutputStream
nimmt. Wie kann ich einen IOutputStream
erstellen und dann den Ausgang als string
oder byte[]
erfassen?
Unten ist die Methode, die ich, um diese Funktionalität zu implementieren versuchen:
private async Task<string> SerializeStrokes(InkCanvas canvas)
{
IReadOnlyList<InkStroke> currentStrokes = canvas.InkPresenter
.StrokeContainer
.GetStrokes();
if (currentStrokes.Count > 0)
{
string serializedString = string.Empty;
using (IOutputStream outputStream = somethinghere)
{
await canvas.InkPresenter.StrokeContainer.SaveAsync(outputStream);
await outputStream.FlushAsync();
}
// use some kind of stream reader to return contents of output ?
}
else
{
return string.Empty;
}
}
Also diesen Code implementiert haben Sie vorgeschlagen, entdeckte ich, dass, unabhängig davon, was auf der Leinwand ist , der Puffer ist immer ein 'byte []' voller 0s und daher ist die Zeichenkette immer "AAAAA ...", und daher werden die Daten nicht erfolgreich in eine Zeichenkette geschrieben. Irgendwelche Ideen? –
Es scheint, dass die Zeile 'available stream.AsStream(). ReadAsync (buffer, 0, buffer.Length);' schreibt nichts in den 'byte [] buffer' –
Ich glaube, ich vergesse die' stream' Suche nach 0 – lindexi