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
Utilizzare WhenEach per processare i risultati di una lista di task
Il nuovo controllo Range di Blazor 9
Implementare il throttle in JavaScript
Creare agenti facilmente con Azure AI Agent Service
Supportare la sessione affinity di Azure App Service con Application Gateway
Analizzare il contenuto di una issue con GitHub Models e AI
Utilizzare @property per animare nativamente un oggetto HTML tramite CSS
Integrare LLM alle nostre applicazioni in .NET con MCP
Importare un servizio esterno in .NET Aspire
Utilizzare l nesting nativo dei CSS
Recuperare le subissue e il loro stato di completamento in GitHub
Le cron expression di un workflow di GitHub
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Sfruttare una CDN con i bundle di ASP.NET
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Inserire le news di Punto Informatico nel proprio sito
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Le DirectInk API nella Universal Windows Platform
- Gli oggetti CallOut di Expression Blend 4.0


