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
Eseguire attività pianificate con Azure Container Jobs
Generare velocemente pagine CRUD in Blazor con QuickGrid
Usare un KeyedService di default in ASP.NET Core 8
Load test di ASP.NET Core con k6
Eseguire query verso tipi non mappati in Entity Framework Core
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Utilizzare gRPC su App Service di Azure
Creazione di componenti personalizzati in React.js con Tailwind CSS
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Cancellare una run di un workflow di GitHub