ImageBrush.ImageSource Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает источник изображения, отображаемый этим ImageBrush. В коде, который вы задали с помощью экземпляра подкласса ImageSource , в XAML вы задали его с помощью универсального кода ресурса (URI) для исходного файла изображения.
public:
property ImageSource ^ ImageSource { ImageSource ^ get(); void set(ImageSource ^ value); };
ImageSource ImageSource();
void ImageSource(ImageSource value);
public ImageSource ImageSource { get; set; }
var imageSource = imageBrush.imageSource;
imageBrush.imageSource = imageSource;
Public Property ImageSource As ImageSource
<ImageBrush ImageSource="imageUri"/>
Значение свойства
Объект, представляющий источник изображения, который будет отображаться объектом ImageBrush при его применении к содержимому.
Комментарии
Настройка источника изображения из исходного файла или потока изображения по сути является асинхронным действием. Если задать для источника значение универсального кода ресурса (URI), которое не может быть разрешено в допустимый исходный файл изображения, ошибка не возникает. Вместо этого он вызывает событие ImageFailed в ImageBrush. Если вы хотите убедиться, что исходный файл изображения загрузился правильно, можно обработать ImageOpened для проверки, а также ImageFailed для предоставления резервного источника изображения или повторной компиляции пользовательского интерфейса.
Настройка ImageSource в XAML
Это свойство можно задать в XAML, но в этом случае значение атрибута ImageSource задается как строка, представляющая универсальный код ресурса (URI). Это поведение основано на преобразовании базового типа, которое обрабатывает строку как универсальный код ресурса (URI) и вызывает внутренний эквивалент конструктора BitmapImage(Uri).
Событие ImageFailed может произойти, если исходное значение атрибута ImageSource в XAML не указывает допустимый источник. Можно использовать относительный путь для ссылки на изображение, упаковав его вместе с приложением, или абсолютный универсальный код ресурса (URI) для ссылки на изображение с сервера. Если вы используете источник образа, который упаковываются в составе приложения, обычно используются схемы ms-appx или ms-resource .
Задание ImageSource в коде
Если вы определяете ImageBrush с помощью кода, ImageBrush.ImageSource требует bitmapImage (а не универсальный код ресурса (URI)) в коде. Если источником является поток, для инициализации значения используйте метод SetSourceAsync. Если источником является универсальный код ресурса (URI), ссылающийся на файл, который содержит содержимое приложения, использующего схемы ms-appx или ms-resource , используйте конструктор BitmapImage , который принимает универсальный код ресурса (URI). Также можно рассмотреть вариант обработки события ImageOpened, если существуют некоторые временные проблемы с получением или декодированием источника изображения, при которых может понадобиться отображать альтернативное содержимое до тех пор, пока источник изображения не станет доступным. Пример кода см . в разделе Пример изображений XAML .
Если вам нужно создать URI относительно другого объекта в пользовательском интерфейсе, чтобы помочь область запрос ресурса, иногда можно использовать свойство FrameworkElement.BaseUri, вызываемое для другого объекта в пользовательском интерфейсе. Это предоставляет базовый универсальный код ресурса (URI), из которого происходит страница XAML в структуре проекта приложения.
Примечание
Вы можете использовать автоматическую обработку для доступа к неквалифицированным ресурсам с помощью текущих квалификаторов масштабирования и языка и региональных параметров или ResourceManager и ResourceMap с квалификаторами для языка и региональных параметров и масштаба, чтобы получить ресурсы напрямую. Подробнее см. в разделе Система управления ресурсами.
Исходные изображения и масштабирование
Следует создавать источники изображений в нескольких рекомендуемых размерах, чтобы приложение выглядело отлично при его масштабировании Windows 8. При указании ImageSource для ImageBrush можно использовать соглашение об именовании, которое автоматически будет ссылаться на правильный ресурс для текущего масштабирования. Особенности контекста именования и дополнительные сведения описываются в разделе Краткое руководство: использование файловых и графических ресурсов.
Дополнительные сведения о проектировании для масштабирования см. в разделе Рекомендации по пользовательскому интерфейсу для макета и масштабирования.
Дополнительные сведения о ресурсах приложения и о том, как упаковать источники изображений в приложение, см. в разделе Определение ресурсов приложения.
Примечания для предыдущих версий
Windows 8
Windows 8 возникла проблема с разрешением ImageSource из значения URI атрибута XAML, если ImageBrush является частью стиля или шаблона XAML, применяемого к элементу управления. При использовании элемента управления иногда используется базовый URI для конкретного компонента, а не соответствующий базовый URI для стиля или шаблона, который обычно поступает из приложения. Проблема устранена, начиная с Windows 8.1; базовый URI правильно определяется для ресурсов приложения или ресурсов компонентов в зависимости от область, которому требуется базовый URI. Приложения, скомпилированные для Windows 8, могли использовать обходные пути для этого поведения, поместив исходные файлы изображений в "неправильное" место, где будет разрешаться URI XAML и приложение будет отображать изображения. Если вы переносите XAML из Windows 8 на Windows 8.1 следует протестировать использование ImageBrush в стиле или шаблоне из XAML и убедиться, что разрешение изображений в приложении работает с Windows 8.1. Если у вас возникла проблема, следует переместить исходные файлы изображений в пакет, чтобы они были в правильном ресурсе область для нового поведения.
Приложения, которые скомпилированы для Windows 8, но выполняются в Windows 8.1, продолжают использовать правила, действующие в Windows 8.