Udostępnij przez


obraz

Interfejs użytkownika aplikacji wieloplatformowej .NET (.NET MAUI) Image wyświetla obraz, który można załadować z pliku lokalnego, URI lub strumienia. Obsługiwane są również standardowe formaty obrazów platformy, w tym animowane pliki GIF i lokalne pliki skalowalnej grafiki wektorowej (SVG). Aby uzyskać więcej informacji na temat dodawania obrazów do projektu aplikacji .NET MAUI, zobacz Dodawanie obrazów do projektu aplikacji .NET MAUI.

Image definiuje następujące właściwości:

  • Aspecttypu Aspectdefiniuje tryb skalowania obrazu.
  • IsAnimationPlayingtypu boolokreśla, czy animowany plik GIF jest odtwarzany, czy zatrzymany. Wartość domyślna tej właściwości to false.
  • IsLoadingtypu boolwskazuje stan ładowania obrazu. Wartość domyślna tej właściwości to false.
  • IsOpaquetypu boolwskazuje, czy aparat renderowania może traktować obraz jako nieprzezroczystym podczas renderowania. Wartość domyślna tej właściwości to false.
  • Sourcetypu ImageSourceokreśla źródło obrazu.

Te właściwości są wspierane przez obiekty BindableProperty, co oznacza, że można je stylizować i być obiektem docelowym powiązań danych.

Notatka

Ikony czcionek mogą być wyświetlane przez Image, określając dane ikony czcionki jako obiekt FontImageSource. Aby uzyskać więcej informacji, zobacz czcionki ikon wyświetlania .

Klasa ImageSource definiuje następujące metody, których można użyć do załadowania obrazu z różnych źródeł:

  • FromFile zwraca FileImageSource, który odczytuje obraz z lokalnego pliku.
  • FromUri zwraca UriImageSource, który pobiera obraz z określonego identyfikatora URI i go odczytuje.
  • FromStream zwraca StreamImageSource, który odczytuje obraz ze strumienia dostarczającego dane obrazu.

W języku XAML obrazy można załadować z plików i identyfikatorów URI, określając nazwę pliku lub identyfikator URI jako wartość ciągu dla właściwości Source. Obrazy można również ładować ze strumieni w języku XAML za pomocą niestandardowych rozszerzeń znaczników.

Ważny

Obrazy będą wyświetlane w pełnej rozdzielczości, chyba że rozmiar Image jest ograniczony przez jego układ lub właściwość HeightRequest lub WidthRequestImage jest określona.

Aby uzyskać informacje na temat dodawania ikon aplikacji i ekranu powitalnego do aplikacji, zobacz Ikony aplikacji i ekran powitalny .

Ładowanie obrazu lokalnego

Obrazy można dodawać do projektu aplikacji, przeciągając je do folderu Resources\Images projektu, gdzie jego akcja kompilacji zostanie automatycznie ustawiona na MauiImage. W czasie budowania rozmiar obrazów wektorowych jest zmieniany na poprawne rozdzielczości dla platformy docelowej i urządzenia oraz dodawany do pakietu aplikacji. Jest to konieczne, ponieważ różne platformy obsługują różne rozdzielczości obrazów, a system operacyjny wybiera odpowiednią rozdzielczość obrazu w czasie wykonywania na podstawie możliwości urządzenia.

Aby zachować zgodność z regułami nazewnictwa zasobów systemu Android, wszystkie lokalne nazwy plików obrazów muszą mieć małe litery, zaczynać i kończyć się literą oraz zawierać tylko znaki alfanumeryczne lub znaki podkreślenia. Aby uzyskać więcej informacji, zapoznaj się z Omówieniem zasobów aplikacji na developer.android.com.

Ważny

Program .NET MAUI konwertuje pliki SVG na pliki PNG. W związku z tym podczas dodawania pliku SVG do projektu aplikacji .NET MAUI należy odwoływać się do niego z pliku XAML lub C# z rozszerzeniem .png.

Przestrzeganie tych reguł nazewnictwa i umieszczania plików umożliwia załadowanie i wyświetlenie obrazu następującego kodu XAML:

<Image Source="dotnet_bot.png" />

Równoważny kod języka C# to:

Image image = new Image
{
    Source = ImageSource.FromFile("dotnet_bot.png")
};

Metoda ImageSource.FromFile wymaga argumentu string i zwraca nowy obiekt FileImageSource odczytujący obraz z pliku. Istnieje również niejawny operator konwersji, który umożliwia określenie nazwy pliku jako argumentu string dla właściwości Image.Source:

Image image = new Image { Source = "dotnet_bot.png" };

Ładowanie obrazu zdalnego

Obrazy zdalne można pobrać i wyświetlić, określając identyfikator URI jako wartość właściwości Source:

<Image Source="https://aka.ms/campus.jpg" />

Równoważny kod języka C# to:

Image image = new Image
{
    Source = ImageSource.FromUri(new Uri("https://aka.ms/campus.jpg"))
};

Metoda ImageSource.FromUri wymaga argumentu Uri i zwraca nowy obiekt UriImageSource odczytujący obraz z Uri. Istnieje również niejawna konwersja URI opartych na stringach:

Image image = new Image { Source = "https://aka.ms/campus.jpg" };

Buforowanie obrazów

Buforowanie pobranych obrazów jest domyślnie włączone, a buforowane obrazy są przechowywane przez 1 dzień. To zachowanie można zmienić, ustawiając właściwości klasy UriImageSource.

Klasa UriImageSource definiuje następujące właściwości:

  • Uri, typu Uri, reprezentuje adres URI obrazu do pobrania w celu wyświetlenia.
  • CacheValiditytypu TimeSpanokreśla, jak długo obraz będzie przechowywany lokalnie. Wartość domyślna tej właściwości to 1 dzień.
  • CachingEnabledtypu boolokreśla, czy buforowanie obrazów jest włączone. Wartość domyślna tej właściwości to true.

Te właściwości są wspierane przez obiekty BindableProperty, co oznacza, że można je stylizować i być obiektem docelowym powiązań danych.

Aby ustawić określony okres pamięci podręcznej, ustaw właściwość Source na obiekt UriImageSource, który ustawia swoją właściwość CacheValidity.

<Image>
    <Image.Source>
        <UriImageSource Uri="https://aka.ms/campus.jpg"
                        CacheValidity="10:00:00:00" />
    </Image.Source>
</Image>

Równoważny kod języka C# to:

Image image = new Image();
image.Source = new UriImageSource
{
    Uri = new Uri("https://aka.ms/campus.jpg"),
    CacheValidity = new TimeSpan(10,0,0,0)
};

W tym przykładzie okres buforowania jest ustawiony na 10 dni.

Ładowanie obrazu ze strumienia

Obrazy można ładować ze strumieni za pomocą metody ImageSource.FromStream:

Image image = new Image
{
    Source = ImageSource.FromStream(() => stream)
};

Ważny

Buforowanie obrazów jest wyłączone w systemie Android podczas ładowania obrazu ze strumienia za pomocą metody ImageSource.FromStream. Wynika to z braku danych, z których można utworzyć rozsądny klucz pamięci podręcznej.

Ładowanie ikony czcionki

Rozszerzenie znaczników FontImage pozwala na wyświetlenie ikony czcionki w każdym widoku, który może wyświetlać ImageSource. Zapewnia tę samą funkcjonalność co klasa FontImageSource, ale z bardziej zwięzłą reprezentacją.

Notatka

Rozszerzenie znaczników FontImage jest przestarzałe w .NET 10 i zostanie usunięte w przyszłej wersji. Użyj FontImageSource zamiast tego.

Rozszerzenie znaczników FontImage jest obsługiwane przez klasę FontImageExtension, która definiuje następujące właściwości:

  • FontFamily typu string, rodzina czcionek, do której należy ikona czcionki.
  • Glyph typu string, wartość znaku Unicode ikony czcionki.
  • Color typu Color, kolor, który ma być używany podczas wyświetlania ikony czcionki.
  • Size typu double, rozmiar ikony czcionki renderowanej w jednostkach niezależnych od urządzeń. Wartość domyślna to 30. Ponadto tę właściwość można ustawić na nazwany rozmiar czcionki.

Notatka

Analizator XAML umożliwia skrót klasy FontImageExtension jako FontImage.

Właściwość Glyph jest właściwością zawartości FontImageExtension. Dlatego w przypadku wyrażeń XAML z użyciem nawiasów klamrowych można wyeliminować część wyrażenia Glyph=, pod warunkiem, że występuje jako pierwszy argument.

W poniższym przykładzie XAML pokazano, jak używać rozszerzenia znaczników FontImage:

<Image BackgroundColor="#D1D1D1"
       Source="{FontImage &#xf30c;, FontFamily=Ionicons, Size=44}" />

W tym przykładzie skrócona wersja nazwy klasy FontImageExtension służy do wyświetlania ikony XBox z rodziny czcionek Ionicons w Image:

zrzut ekranu rozszerzenia znaczników FontImage.

Znak Unicode dla ikony jest \uf30c, ale musi zostać uniknięty w języku XAML, a więc staje się &#xf30c;.

Aby uzyskać informacje o wyświetlaniu ikon czcionek, określając dane ikon czcionki w obiekcie FontImageSource, zobacz Wyświetl ikony czcionek.

Ikony czcionek można wyświetlić, określając dane ikony czcionki w obiekcie FontImageSource. Aby uzyskać więcej informacji, zobacz czcionki ikon wyświetlania .

Ładowanie animowanych plików GIF

Program .NET MAUI obejmuje obsługę wyświetlania małych, animowanych plików GIF. Można to zrobić, ustawiając właściwość Source na animowany plik GIF:

<Image Source="demo.gif" />

Ważny

Chociaż animowana obsługa formatu GIF na platformie .NET MAUI obejmuje możliwość pobierania plików, nie obsługuje buforowania ani przesyłania strumieniowego animowanych plików GIF.

Domyślnie, gdy animowany plik GIF zostanie załadowany, nie będzie odtwarzany. Jest to spowodowane tym, że właściwość IsAnimationPlaying, która kontroluje, czy animowany plik GIF jest odtwarzany, czy zatrzymany, ma domyślną wartość false. W związku z tym, gdy animowany plik GIF zostanie załadowany, nie będzie odtwarzany, dopóki właściwość IsAnimationPlaying nie zostanie ustawiona na true. Odtwarzanie można zatrzymać, resetując właściwość IsAnimationPlaying do wartości false. Należy pamiętać, że ta właściwość nie ma wpływu na wyświetlanie źródła obrazu innego niż GIF.

Kontrolowanie skalowania obrazów

Właściwość Aspect określa sposób skalowania obrazu w celu dopasowania go do obszaru wyświetlania i należy ustawić na jeden z elementów członkowskich wyliczenia Aspect:

  • AspectFit — pola literowe obrazu (jeśli jest to wymagane), tak aby cały obraz mieścił się w obszarze wyświetlania, z pustym miejscem dodanym do góry/dołu lub boków w zależności od tego, czy obraz jest szeroki, czy wysoki.
  • AspectFill — przycina obraz tak, aby wypełniał obszar wyświetlania przy zachowaniu współczynnika proporcji.
  • Fill — rozciąga obraz do całkowitego i dokładnie wypełnienia obszaru wyświetlania. Może to spowodować zniekształcenie obrazu.
  • Center — wyśrodkuje obraz w obszarze wyświetlania, zachowując współczynnik proporcji.