Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В компоненте Image в многоплатформенном пользовательском интерфейсе приложений .NET (.NET MAUI) отображается изображение, которое можно загрузить из локального файла, URI или потока данных. Поддерживаются стандартные форматы изображений платформы, включая анимированные GIF-файлы, а также локальные масштабируемые векторные графические файлы (SVG). Дополнительные сведения о добавлении изображений в проект приложения .NET MAUI см. в статье Добавление изображений в проект приложения .NET MAUI.
Image определяет следующие свойства:
-
Aspect
типаAspect
определяет режим масштабирования изображения. -
IsAnimationPlaying
типаbool
определяет, проигрывается ли анимированный GIF-файл или он остановлен. Значение по умолчанию этого свойства —false
. -
IsLoading
типаbool
указывает состояние загрузки образа. Значение по умолчанию этого свойства —false
. -
IsOpaque
типаbool
указывает, может ли движок отрисовки рассматривать изображение как непрозрачное. Значение по умолчанию этого свойства —false
. -
Source
типа ImageSourceуказывает источник изображения.
Эти свойства поддерживаются объектами BindableProperty, что означает, что они могут быть стилизованы и являться целями привязки данных.
Заметка
Значки шрифтов можно отображать с помощью Image, указав данные значка шрифта в виде объекта FontImageSource. Дополнительные сведения см. в разделе Отображение значков шрифтов.
Класс ImageSource определяет следующие методы, которые можно использовать для загрузки изображения из разных источников:
-
FromFile
возвращаетFileImageSource
, который считывает изображение из локального файла. -
FromUri
возвращаетUriImageSource
, который скачивает и считывает изображение из указанного URI. -
FromStream
возвращаетStreamImageSource
, который считывает изображение из потока, предоставляющего данные изображения.
В XAML изображения можно загрузить из файлов и URI, указав имя файла или URI в качестве строкового значения для свойства Source
. Изображения также можно загружать из потоков в XAML с помощью пользовательских расширений разметки.
Важный
Изображения будут отображаться в полном разрешении, если только размер Image не ограничен его макетом или не задано свойство HeightRequest или WidthRequest для Image.
Сведения о добавлении значков приложения и экрана-заставки в приложение см. в значках приложений и .
Загрузка локального образа
Изображения можно добавить в проект приложения, перетащив их в папку Resources\Images вашего проекта, где действие сборки автоматически будет установлено на MauiImage. Во время сборки векторные изображения изменяются до правильных разрешений для целевой платформы и устройства и добавляются в пакет приложения. Это необходимо, так как разные платформы поддерживают разные разрешения изображений, а операционная система выбирает соответствующее разрешение изображений во время выполнения на основе возможностей устройства.
Чтобы соответствовать правилам именования ресурсов Android, все имена файлов локальных изображений должны быть написаны строчными буквами, начинаться и заканчиваться буквой и содержать только буквенно-цифровые символы или символы подчеркивания. Дополнительную информацию см. в обзоре ресурсов приложений на сайте developer.android.com.
Важный
.NET MAUI преобразует SVG-файлы в PNG-файлы. Поэтому при добавлении SVG-файла в проект приложения .NET MAUI следует ссылаться через XAML или C# с расширением .png.
В соответствии с этими правилами именования и размещения файлов можно загрузить и отобразить изображение в следующем XAML:
<Image Source="dotnet_bot.png" />
Эквивалентный код C#:
Image image = new Image
{
Source = ImageSource.FromFile("dotnet_bot.png")
};
Метод ImageSource.FromFile
требует аргумента string
и возвращает новый объект FileImageSource
, который считывает изображение из файла. Существует также неявный оператор преобразования, который позволяет указать имя файла в качестве аргумента string
свойству Image.Source
:
Image image = new Image { Source = "dotnet_bot.png" };
Загрузка удаленного образа
Удалённые изображения можно загрузить и показать, указав унифицированный идентификатор ресурса (URI) в качестве значения свойства Source
.
<Image Source="https://aka.ms/campus.jpg" />
Эквивалентный код C#:
Image image = new Image
{
Source = ImageSource.FromUri(new Uri("https://aka.ms/campus.jpg"))
};
Метод ImageSource.FromUri
требует аргумента Uri
и возвращает новый объект UriImageSource
, который считывает изображение из Uri
. Существует также неявное преобразование для строковых URI:
Image image = new Image { Source = "https://aka.ms/campus.jpg" };
Кэширование изображений
Кэширование скачанных изображений по умолчанию включено, при этом кэшированные образы хранятся в течение 1 дня. Это поведение можно изменить, задав свойства класса UriImageSource
.
Класс UriImageSource
определяет следующие свойства:
-
Uri
типаUri
представляет собой URI изображения, которое нужно скачать для отображения. -
CacheValidity
типаTimeSpan
указывает, сколько времени образ будет храниться локально. Значение по умолчанию этого свойства составляет 1 день. -
CachingEnabled
типаbool
определяет, включено ли кэширование изображений. Значение по умолчанию этого свойства —true
.
Эти свойства поддерживаются объектами BindableProperty, что означает, что их можно стилизовать и служить целевыми объектами для привязки данных.
Чтобы установить определенный период кэширования, задайте свойство Source
объектом UriImageSource
, который задает свое свойство CacheValidity
.
<Image>
<Image.Source>
<UriImageSource Uri="https://aka.ms/campus.jpg"
CacheValidity="10:00:00:00" />
</Image.Source>
</Image>
Эквивалентный код C#:
Image image = new Image();
image.Source = new UriImageSource
{
Uri = new Uri("https://aka.ms/campus.jpg"),
CacheValidity = new TimeSpan(10,0,0,0)
};
В этом примере период кэширования имеет значение 10 дней.
Загрузка изображения из потока
Изображения можно загрузить из потоков с помощью метода ImageSource.FromStream
:
Image image = new Image
{
Source = ImageSource.FromStream(() => stream)
};
Важный
Кэширование изображений отключено в Android при загрузке изображения из потока с помощью метода ImageSource.FromStream
. Это связано с отсутствием данных, из которых необходимо создать разумный ключ кэша.
Загрузка значка шрифта
Расширение разметки FontImage
позволяет отображать значок шрифта в любом представлении, которое может отображать ImageSource. Он предоставляет те же функции, что и класс FontImageSource, но с более кратким представлением.
Расширение разметки FontImage
поддерживается классом FontImageExtension, который определяет следующие свойства:
-
FontFamily
типаstring
, семейство шрифтов, которому принадлежит иконка шрифта. -
Glyph
типаstring
, значение символа юникода иконки шрифта. -
Color
типа Color, цвет, используемый при отображении иконки шрифта. - Размер значка отрисованного шрифта
Size
типаdouble
в единицах, независимых от устройства. Значение по умолчанию — 30. Кроме того, это свойство можно задать для именованного размера шрифта.
Заметка
Средство синтаксического анализа XAML позволяет сократить класс FontImageExtension как FontImage
.
Свойство Glyph
является свойством содержимого FontImageExtension. Поэтому для выражений разметки XAML, выраженных с фигурными скобками, можно исключить Glyph=
часть выражения, если это первый аргумент.
В следующем примере XAML показано, как использовать расширение разметки FontImage
:
<Image BackgroundColor="#D1D1D1"
Source="{FontImage , FontFamily=Ionicons, Size=44}" />
В этом примере сокращенная версия имени класса FontImageExtension используется для отображения значка XBox из семейства шрифтов Ionicons в Image:
Хотя символ юникода для значка — \uf30c
, он должен быть экранирован в XAML, и потому превращается в 
.
Сведения о отображении значков шрифта путем указания данных значка шрифта в объекте FontImageSource см. в разделе Отображение значков шрифта.
Значки шрифта можно отобразить, указав данные значка шрифта в объекте FontImageSource. Дополнительные сведения см. в разделе Отображение значков шрифтов.
Загрузка анимированных GIF-файлов
.NET MAUI включает поддержку отображения небольших анимированных GIF-файлов. Это достигается путем установки свойства Source
в анимированный GIF-файл:
<Image Source="demo.gif" />
Важный
Хотя поддержка анимированных GIF-файлов в .NET MAUI включает возможность скачивания файлов, она не поддерживает кэширование или потоковую передачу анимированных GIF-файлов.
По умолчанию при загрузке анимированного GIF-файла он не будет воспроизводиться. Это связано с тем, что свойство IsAnimationPlaying
, которое определяет, воспроизводит ли анимированный GIF-файл или останавливается, имеет значение по умолчанию false
. Поэтому, когда анимированный GIF-файл загружен, он не будет воспроизводиться, пока свойство IsAnimationPlaying
не установлено в true
. Воспроизведение можно остановить, сбросив свойство IsAnimationPlaying
на false
. Обратите внимание, что это свойство не действует при отображении источника изображения, отличного от GIF.
Управление масштабированием изображений
Свойство Aspect
определяет, как будет масштабироваться изображение, чтобы соответствовать области отображения, и должно быть задано одно из элементов перечисления Aspect
:
-
AspectFit
— добавляет черные полосы к изображению (при необходимости), чтобы все изображение помещалось в область отображения, с пустыми полями, добавленными сверху или снизу, или по бокам в зависимости от соотношения сторон изображения. -
AspectFill
— обрезает изображение так, чтобы оно заполняло область отображения с сохранением пропорций. -
Fill
— растягивает изображение полностью и точно заполняет область отображения. Это может привести к искажению изображения. - Команда
Center
центрирует изображение на экране, сохраняя его пропорции.