Abbiamo visto come sia facile utilizzare le DirectInk API della Universal Windows Platform per implementare dei canvas virtuali con cui scrivere e disegnare tramite touch o mouse.
In un altro script abbiamo visto come sia facile esportare all'interno di una GIF i dati ISF della nostra sessione di disegno, e nello script di questa settimana vediamo quando sia altrettanto semplice ripristinarli.
Sempre grazie ad una funzionalità dell'InkPresenter è la possibilità di caricare da file una sessione di disegno precedentemente salvata, tutto ciò che dobbiamo fare è chiamare il metodo LoadAsync contenuto all'interno della proprietà StrokeContainer dell'InkPresenter.
Il codice per implementare questa funzionalità è riportato in basso:
async Task Load() { var file = await ApplicationData.Current.LocalFolder.GetFileAsync("draw.gif"); using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite)) { await myInkSurface.InkPresenter.StrokeContainer.LoadAsync(stream); } }
Ovviamente, in una situazione di ripristino della superfice di disegno potrebbe tornarci utile azzerare il canvas per consentire un caricamento più pulito di una sessione precedentemente salvata. Per azzerare un canvas è sufficiente invocare il metodo Clear dello StrokeContainer come identicato qui in basso:
private void Clear() { myInkSurface.InkPresenter.StrokeContainer.Clear(); }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire domini wildcard in Azure Container Apps
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Usare una container image come runner di GitHub Actions
Paginare i risultati con QuickGrid in Blazor
Elencare le container images installate in un cluster di Kubernetes
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Effettuare chiamate con versioning da Blazor ad ASP.NET Core
Criptare la comunicazione con mTLS in Azure Container Apps
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Creare alias per tipi generici e tuple in C#
Sostituire la GitHub Action di login su private registry
Routing statico e PreRendering in una Blazor Web App