Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

WinRT: aprire un'immagine da file e assegnarla al controllo Image

Non è infrequente la necessità di aprire una foto salvata come file su disco e assegnarla a un controllo Image, non solo in Windows 8 ovviamente.

Il Windows Runtime ci costringe, però, ad un cambio d'ottica legato alle modalità di accesso al disco locale e all'approccio totalmente asincrono.

Supponiamo di voler aprire un'immagine da disco. Sappiamo che, in una Windows Store app, dobbiamo avere il permesso di accedere ad alcune cartelle, pertanto, come prima cosa, nelle capabilities del manifest di progetto selezioneremo Pictures Library affinché si possa accedere alla cartella Immagini.

Dopodiché, consideriamo il seguente codice:

Private Async Function OpenPictureAsync() As Task     Dim filePicker As New FileOpenPicker()     With filePicker.FileTypeFilter         .Add(".jpg")         .Add(".png")         .Add(".bmp")         .Add(".gif")         .Add(".tif")     End With     filePicker.ViewMode = PickerViewMode.Thumbnail     filePicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary     filePicker.SettingsIdentifier = "picker1"     filePicker.CommitButtonText = "Open File"       file = Await filePicker.PickSingleFileAsync     If file IsNot Nothing Then         Me.PreviewImage.Source = Await CreateImageAsync(file)     End If End Function
Con un FileOpenPicker, consento all'utente di selezionare un file da disco, in particolare dalla cartella delle foto. Il metodo PickSingleFileAsync mi permette di aprire un solo file (richiede una Imports Windows.Storage) e mi restituisce un oggetto StorageFile.

Dato questo tipo di oggetto, non posso assegnarlo direttamente a un controllo Image. Per tale ragione, definisco il seguente metodo:

Private Async Function CreateImageAsync(file As StorageFileAs Task(Of BitmapImage)     Dim resultFile = Await file.OpenReadAsync       Dim bmp As New BitmapImage     Await bmp.SetSourceAsync(resultFile)       Return bmp End Function
Essenzialmente, apro in lettura il file (OpenReadAsync), poi creo una BitmapImage che popolo, attraverso SetSourceAsync, con uno stream di tipo IRandomAccessStreamWithContentType. Restituisco la BitmapImage ottenuta; questo è un oggetto di un tipo che la proprietà Source del controllo Image può ricevere. Così facendo, saremo in grado di visualizzare l'immagine selezionata.

Alessandr

Print | posted on mercoledì 18 dicembre 2013 20:44 | Filed Under [ UWP e Windows Store Apps ]

Powered by:
Powered By Subtext Powered By ASP.NET