Immagine
L'interfaccia utente dell'app multipiattaforma .NET (.NET MAUI) Image visualizza un'immagine che può essere caricata da un file locale, un URI o un flusso. Sono supportati anche i formati di immagine standard della piattaforma, incluse le GIF animate e i file SVG (Scalable Vector Graphics) locali. Per altre informazioni sull'aggiunta di immagini a un progetto di app MAUI .NET, vedere Aggiungere immagini a un progetto di app MAUI .NET.
Image definisce le proprietà seguenti:
Aspect
, di tipoAspect
, definisce la modalità di ridimensionamento dell'immagine.IsAnimationPlaying
, di tipobool
, determina se una GIF animata viene riprodotta o arrestata. Il valore predefinito di questa proprietà èfalse
.IsLoading
, di tipobool
, indica lo stato di caricamento dell'immagine. Il valore predefinito di questa proprietà èfalse
.IsOpaque
, di tipobool
, indica se il motore di rendering può considerare l'immagine come opaca durante il rendering. Il valore predefinito di questa proprietà èfalse
.Source
, di tipo ImageSource, specifica l'origine dell'immagine.
Queste proprietà sono supportate da BindableProperty oggetti, il che significa che possono essere stilizzati e essere la destinazione dei data binding.
Nota
Le icone dei tipi di carattere possono essere visualizzate da un oggetto Image specificando i dati dell'icona del carattere come FontImageSource oggetto . Per altre informazioni, vedere Visualizzare le icone dei tipi di carattere.
La ImageSource classe definisce i metodi seguenti che possono essere usati per caricare un'immagine da origini diverse:
FromFile
restituisce un oggettoFileImageSource
che legge un'immagine da un file locale.FromUri
restituisce un oggettoUriImageSource
che scarica e legge un'immagine da un URI specificato.FromStream
restituisce un oggettoStreamImageSource
che legge un'immagine da un flusso che fornisce dati di immagine.
In XAML le immagini possono essere caricate da file e URI specificando il nome file o l'URI come valore stringa per la Source
proprietà. Le immagini possono anche essere caricate da flussi in XAML tramite estensioni di markup personalizzate.
Importante
Le immagini verranno visualizzate con la risoluzione completa, a meno che le dimensioni dell'oggetto Image non siano vincolate dal relativo layout o che la HeightRequest proprietà o WidthRequest di Image sia specificata.
Per informazioni sull'aggiunta di icone dell'app e una schermata iniziale all'app, vedi Icone dell'app e schermata iniziale.
Caricare un'immagine locale
Le immagini possono essere aggiunte al progetto dell'app trascinandole nella cartella Resources\Images del progetto, in cui l'azione di compilazione verrà impostata automaticamente su MauiImage. In fase di compilazione, le immagini vettoriali vengono ridimensionate in base alle risoluzioni corrette per la piattaforma e il dispositivo di destinazione e aggiunte al pacchetto dell'app. Questa operazione è necessaria perché diverse piattaforme supportano risoluzioni delle immagini diverse e il sistema operativo sceglie la risoluzione dell'immagine appropriata in fase di esecuzione in base alle funzionalità del dispositivo.
Per rispettare le regole di denominazione delle risorse Android, tutti i nomi di file di immagine locali devono essere minuscoli, iniziali e finali con un carattere lettera e contengono solo caratteri alfanumerici o caratteri di sottolineatura. Per altre informazioni, vedere Panoramica delle risorse dell'app su developer.android.com.
Importante
.NET MAUI converte i file SVG in file PNG. Pertanto, quando si aggiunge un file SVG al progetto di app MAUI .NET, deve essere fatto riferimento da XAML o C# con estensione png.
L'adesione a queste regole per la denominazione e il posizionamento dei file consente al codice XAML seguente di caricare e visualizzare un'immagine:
<Image Source="dotnet_bot.png" />
Il codice C# equivalente è il seguente:
Image image = new Image
{
Source = ImageSource.FromFile("dotnet_bot.png")
};
Il ImageSource.FromFile
metodo richiede un string
argomento e restituisce un nuovo FileImageSource
oggetto che legge l'immagine dal file. Esiste anche un operatore di conversione implicito che consente di specificare il nome file come string
argomento per la Image.Source
proprietà :
Image image = new Image { Source = "dotnet_bot.png" };
Caricare un'immagine remota
Le immagini remote possono essere scaricate e visualizzate specificando un URI come valore della Source
proprietà :
<Image Source="https://aka.ms/campus.jpg" />
Il codice C# equivalente è il seguente:
Image image = new Image
{
Source = ImageSource.FromUri(new Uri("https://aka.ms/campus.jpg"))
};
Il ImageSource.FromUri
metodo richiede un Uri
argomento e restituisce un nuovo UriImageSource
oggetto che legge l'immagine da Uri
. È anche disponibile una conversione implicita per gli URI basati su stringhe:
Image image = new Image { Source = "https://aka.ms/campus.jpg" };
Memorizzazione nella cache delle immagini
La memorizzazione nella cache delle immagini scaricate è abilitata per impostazione predefinita, con le immagini memorizzate nella cache per 1 giorno. Questo comportamento può essere modificato impostando le proprietà della UriImageSource
classe .
La UriImageSource
classe definisce le proprietà seguenti:
Uri
, di tipoUri
, rappresenta l'URI dell'immagine da scaricare per la visualizzazione.CacheValidity
, di tipoTimeSpan
, specifica per quanto tempo l'immagine verrà archiviata in locale. Il valore predefinito di questa proprietà è 1 giorno.CachingEnabled
, di tipobool
, definisce se la memorizzazione nella cache delle immagini è abilitata. Il valore predefinito di questa proprietà ètrue
.
Queste proprietà sono supportate da BindableProperty oggetti, il che significa che possono essere stilizzati e essere la destinazione dei data binding.
Per impostare un periodo di cache specifico, impostare la Source
proprietà su un UriImageSource
oggetto che imposta la relativa CacheValidity
proprietà:
<Image>
<Image.Source>
<UriImageSource Uri="https://aka.ms/campus.jpg"
CacheValidity="10:00:00:00" />
</Image.Source>
</Image>
Il codice C# equivalente è il seguente:
Image image = new Image();
image.Source = new UriImageSource
{
Uri = new Uri("https://aka.ms/campus.jpg"),
CacheValidity = new TimeSpan(10,0,0,0)
};
In questo esempio il periodo di memorizzazione nella cache è impostato su 10 giorni.
Caricare un'immagine da un flusso
Le immagini possono essere caricate da flussi con il ImageSource.FromStream
metodo :
Image image = new Image
{
Source = ImageSource.FromStream(() => stream)
};
Importante
La memorizzazione nella cache delle immagini è disabilitata in Android durante il caricamento di un'immagine da un flusso con il ImageSource.FromStream
metodo . Ciò è dovuto alla mancanza di dati da cui creare una chiave di cache ragionevole.
Caricare un'icona del tipo di carattere
L'estensione FontImage
di markup consente di visualizzare un'icona del carattere in qualsiasi visualizzazione in grado di visualizzare un oggetto ImageSource. Fornisce la stessa funzionalità della FontImageSource classe , ma con una rappresentazione più concisa.
L'estensione FontImage
di markup è supportata dalla FontImageExtension classe , che definisce le proprietà seguenti:
FontFamily
di tipostring
, la famiglia di caratteri a cui appartiene l'icona del carattere.Glyph
di tipostring
, il valore del carattere Unicode dell'icona del tipo di carattere.Color
di tipo Color, il colore da utilizzare durante la visualizzazione dell'icona del carattere.Size
di tipodouble
, la dimensione, in unità indipendenti dal dispositivo, dell'icona del tipo di carattere di cui è stato eseguito il rendering. Il valore predefinito è 30. Inoltre, questa proprietà può essere impostata su una dimensione del carattere denominata.
Nota
Il parser XAML consente di abbreviatare la FontImageExtension classe come FontImage
.
La Glyph
proprietà è la proprietà content di FontImageExtension. Pertanto, per le espressioni di markup XAML espresse con parentesi graffe, puoi eliminare la Glyph=
parte dell'espressione purché sia il primo argomento.
L'esempio XAML seguente illustra come usare l'estensione di FontImage
markup:
<Image BackgroundColor="#D1D1D1"
Source="{FontImage , FontFamily=Ionicons, Size=44}" />
In questo esempio viene usata la versione abbreviata del nome della FontImageExtension classe per visualizzare un'icona XBox, dalla famiglia di tipi dicaratterei, in un Imageoggetto :
Mentre il carattere Unicode per l'icona è \uf30c
, deve essere preceduto da un carattere di escape in XAML e quindi diventa 
.
Per informazioni sulla visualizzazione delle icone dei tipi di carattere specificando i dati dell'icona del carattere in un FontImageSource oggetto, vedere Visualizzare le icone dei tipi di carattere.
Caricare GIF animate
.NET MAUI include il supporto per la visualizzazione di GIF animate di piccole dimensioni. Questa operazione viene eseguita impostando la Source
proprietà su un file GIF animato:
<Image Source="demo.gif" />
Importante
Anche se il supporto GIF animato in .NET MAUI include la possibilità di scaricare i file, non supporta la memorizzazione nella cache o lo streaming di GIF animate.
Per impostazione predefinita, quando viene caricata una GIF animata, non verrà riprodotta. Ciò è dovuto al fatto che la IsAnimationPlaying
proprietà , che controlla se una GIF animata è in riproduzione o arrestata, ha un valore predefinito di false
. Pertanto, quando viene caricata una GIF animata, non verrà riprodotta finché la IsAnimationPlaying
proprietà non viene impostata su true
. La riproduzione può essere arrestata reimpostando la IsAnimationPlaying
proprietà su false
. Si noti che questa proprietà non ha alcun effetto quando viene visualizzata un'origine immagine non GIF.
Controllare il ridimensionamento delle immagini
La Aspect
proprietà determina la modalità di ridimensionamento dell'immagine in base all'area di visualizzazione e deve essere impostata su uno dei membri dell'enumerazione Aspect
:
AspectFit
- casella di lettere l'immagine (se necessario) in modo che l'intera immagine si inserisca nell'area di visualizzazione, con spazio vuoto aggiunto all'angolo superiore/inferiore o ai lati a seconda che l'immagine sia larga o alta.AspectFill
: ritaglia l'immagine in modo da riempire l'area di visualizzazione mantenendo le proporzioni.Fill
: estende l'immagine in modo da riempire completamente l'area di visualizzazione. Ciò può comportare la distorsione dell'immagine.Center
- centra l'immagine nell'area di visualizzazione mantenendo le proporzioni.