Nell'SDK di WinRT di Windows 8.1 abbiamo a disposizione la classe RenderTargetBitmap che ci permette di trasformare un markup XAML in una immagine.
Poichè RenderTargetBitmap eredita da ImageSource, possiamo utilizzarlo per valorizzare la proprietà Source di un Image per renderizzare una bitmap di un complesso visual tree di oggetti definiti nel markup; l'elaborazione scatta richiamando il metodo RenderAsync che accetta come parametri lo UIElement da 'appiattire' e facoltativamente anche le dimensioni finali della bitmap.
var renderTargetBitmap = new RenderTargetBitmap(); await renderTargetBitmap.RenderAsync(myGrid, _width, _height); myImage.Source = renderTargetBitmap;
Con il metodo GetPixelsAsync, inoltre, possiamo recuperare l'array di byte corrispondente all'immagine per, ad esempio, salvarlo su file system con FileSavePicker.
var pixelBuffer = await renderTargetBitmap.GetPixelsAsync(); var savePicker = new FileSavePicker(); savePicker.FileTypeChoices.Add(".png", new List<string> { ".png" }); var file = await savePicker.PickSaveFileAsync(); using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite)) { var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.BmpEncoderId, stream); encoder.SetPixelData( BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)renderTargetBitmap.PixelWidth, (uint)renderTargetBitmap.PixelHeight, DisplayInformation.GetForCurrentView().LogicalDpi, DisplayInformation.GetForCurrentView().LogicalDpi, pixelBuffer.ToArray()); await encoder.FlushAsync(); }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Creare una libreria CSS universale: Nav menu
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Introduzione ai web component HTML
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Filtering sulle colonne in una QuickGrid di Blazor