Указание ресурсов образа ленты
Как многофункциональная система представления команд платформа ленты Windows предназначена для широкой поддержки ресурсов изображений в пользовательском интерфейсе ленты. Все ресурсы изображений объявляются в разметке ленты или запрашиваются из ведущего приложения ленты.
Для Windows 8 и более поздних версий платформа ленты поддерживает следующие графические форматы: 32-разрядные файлы точечных изображений ARGB (BMP) и PNG-файлы с прозрачностью.
Для Windows 7 и более ранних версий ресурсы изображений должны соответствовать стандартному графическому формату BMP, используемому в Windows.
Примечание
Ошибка компиляции может возникнуть, если в платформу предоставлен неподдерживаемый формат изображения.
Размеры изображений
Чтобы обеспечить большую гибкость макетов элементов управления ленты при изменении размера окна приложения, платформа ленты принимает и отрисовывает изображения одного из двух размеров: большой или маленький.
На следующих рисунках показано приложение ленты, которое поддерживает несколько размеров ленты с помощью гибких макетов элементов управления и замены больших изображений небольшими изображениями, если они доступны.
На следующем снимке экрана показана лента с большими изображениями для элементов управления Масштаб.
На следующем снимке экрана показана та же лента с небольшими изображениями для элементов управления "Масштаб"
На следующем снимке экрана показана лента в скрытом состоянии. Лента скрыта, если все потенциальные макеты элементов управления исчерпаны и ленту невозможно отрисовывать с помощью рабочей области приложения.
Для любого изображения точный размер пикселей зависит от разрешения дисплея или точек на дюйм (точек на дюйм) используемого монитора. При 96 точек на дюйм большие изображения имеют размер 32 x 32 пикселей, а небольшие — 16 x 16 пикселей. Размеры изображений увеличиваются линейно относительно dpi, как показано в следующей таблице.
DPI | Небольшое изображение | Большое изображение |
---|---|---|
96 точек на дюйм | 16 x 16 пикселей | 32x32 пикселей |
120 точек на дюйм | 20x20 пикселей | 40x40 пикселей |
144 точек на дюйм | 24 x 24 пикселей | 48 x 48 пикселей |
192 точек на дюйм | 32x32 пикселей | 64x64 пикселей |
Платформа ленты масштабирует ресурсы изображений по мере необходимости. Однако, так как изменение размера может привести к нежелательным артефактам и ухудшению качества изображения, настоятельно рекомендуется, чтобы приложение предоставило небольшой набор ресурсов изображений, охватывающих различные часто используемые параметры разрешения на дюйм. Если точное совпадение не найдено, ближайшее изображение будет масштабировано вверх или вниз.
Для этого ресурсы изображений можно объявить в разметке ленты с помощью набора элементов Image для каждого элемента Command . Во время выполнения платформа выбирает изображение для отображения на основе атрибута MinDPI каждого элемента Image .
Важно!
Когда коллекция ресурсов изображений, предназначенных для поддержки определенных параметров разрешения экрана, предоставляется платформе ленты с помощью набора элементов Image , платформа использует image со значением атрибута MinDPI , которое соответствует текущему параметру разрешения экрана.
Если элемент Image не объявлен со значением MinDPI , соответствующим текущему параметру точек на дюйм экрана, платформа выбирает изображение с ближайшим значением MinDPI меньше текущего параметра разрешения экрана, и масштабирует ресурс изображения вверх. В противном случае, если элемент Image не объявлен со значением атрибута MinDPI меньше текущего параметра dpi экрана, платформа выбирает ближайшее значение MinDPI больше текущего параметра разрешения экрана и масштабирует ресурс изображения.
В следующем примере показано, как объявить набор образов для размещения различных размеров ленты и параметров системы.
<Command.LargeImages>
<Image Source="res/CutLargeImage32.bmp" Id="116" Symbol="ID_CUT_LARGEIMAGE1" MinDPI="96" />
<Image Source="res/CutLargeImage40.bmp" Id="117" Symbol="ID_CUT_LARGEIMAGE2" MinDPI="120" />
<Image Source="res/CutLargeImage48.bmp" Id="118" Symbol="ID_CUT_LARGEIMAGE3" MinDPI="144" />
<Image Source="res/CutLargeImage64.bmp" Id="119" Symbol="ID_CUT_LARGEIMAGE4" MinDPI="192" />
</Command.LargeImages>
<Command.SmallImages>
<Image Source="res/CutSmallImage16.bmp" Id="122" Symbol="ID_CUT_SMALLIMAGE1" MinDPI="96" />
<Image Source="res/CutSmallImage20.bmp" Id="123" Symbol="ID_CUT_SMALLIMAGE2" MinDPI="120" />
<Image Source="res/CutSmallImage24.bmp" Id="124" Symbol="ID_CUT_SMALLIMAGE3" MinDPI="144" />
<Image Source="res/CutSmallImage32.bmp" Id="125" Symbol="ID_CUT_SMALLIMAGE4" MinDPI="192" />
</Command.SmallImages>
<Command.LargeHighContrastImages>
<Image Source="res/CutLargeImage32HC.bmp" Id="130" Symbol="ID_CUT_LARGEIMAGE1HC" MinDPI="96" />
<Image Source="res/CutLargeImage40HC.bmp" Id="131" Symbol="ID_CUT_LARGEIMAGE2HC" MinDPI="120" />
<Image Source="res/CutLargeImage48HC.bmp" Id="132" Symbol="ID_CUT_LARGEIMAGE3HC" MinDPI="144" />
<Image Source="res/CutLargeImage64HC.bmp" Id="133" Symbol="ID_CUT_LARGEIMAGE4HC" MinDPI="192" />
</Command.LargeHighContrastImages>
<Command.SmallHighContrastImages>
<Image Source="res/CutSmallImage16HC.bmp" Id="135" Symbol="ID_CUT_SMALLIMAGE1HC" MinDPI="96" />
<Image Source="res/CutSmallImage20HC.bmp" Id="136" Symbol="ID_CUT_SMALLIMAGE2HC" MinDPI="120" />
<Image Source="res/CutSmallImage24HC.bmp" Id="137" Symbol="ID_CUT_SMALLIMAGE3HC" MinDPI="144" />
<Image Source="res/CutSmallImage32HC.bmp" Id="138" Symbol="ID_CUT_SMALLIMAGE4HC" MinDPI="192" />
</Command.SmallHighContrastImages>
Если по какой-либо причине образы, объявленные в разметке, становятся недействительными во время выполнения, ведущее приложение запрашивает новые образы. При создании и загрузке этих образов программными средствами приложение должно попытаться вернуть изображения, размеры которых соответствуют размерам системных значков по умолчанию, определенным SM_CXICON системной метрикой.
Примечание
Большие изображения имеют размер SM_CXICON по SM_CXICON, а маленькие — SM_CXICON/2 на SM_CXICON/2.
Глубина цвета, прозрачность и контрастность
Обычные изображения должны иметь формат ARGB 32 бит на пиксель (BPP) и масштабироваться до размера системного значка по умолчанию. Этот формат поддерживает как прозрачность, так и сглаживание (с использованием 8 бит на канал).
Предупреждение
Многие средства редактирования изображений не сохраняют 8-разрядный альфа-канал верхнего порядка при загрузке или сохранении изображений 32 BPP.
Чтобы изображение правильно отображалось в режиме высокой контрастности, оно должно быть в формате паллетированных пикселей 4 BPP. При отрисовки изображения платформа ленты переназначает определенные цвета на основе контекста изображения с высокой контрастностью.
В следующей таблице перечислены режимы отрисовки цветов с высокой контрастностью платформы.
Цвет пикселя
Значение RGB
Поведение
Белый фон
Темный фон
ПУРПУРНЫЙ
800080
Прозрачный
Прозрачный
ЧЕРНЫЙ
000000
COLOR_WINDOWTEXT
БЕЛЫЙ
БЕЛЫЙ
FFFFFF
COLOR_WINDOW
ЧЕРНЫЙ
ТЕМНО-СЕРЫЙ
808080
COLOR_3DSHADOW
COLOR_3DSHADOW
СЕРЫЙ
C0C0C0
COLOR_3DFACE
COLOR_3DFACE
СВЕТЛО-СЕРЫЙ
DFDFDF
COLOR_3DLIGHT
COLOR_3DLIGHT
СИНИЙ
000080
Недоступно
БЕЛЫЙ
Дополнительные сведения о форматах изображений, поддерживаемых платформой ленты, см. в следующих статьях:
- Структура BITMAPINFOHEADER — описывает формат пикселей ARGB 32 BPP.
- Функция CreateDIBSection — описывает создание изображения в формате 32 BPP в формате пикселей ARGB.
- Функция LoadImage — описывает загрузку изображения в формате 32 BPP в формате пикселей ARGB.
Специальные возможности
Использование ресурсов изображений для предоставления информации, передачи функциональных возможностей управления и предоставления состояния приложения увеличивает потребность в специальных возможностях во время проектирования и разработки приложений.
Для базовой поддержки высокой контрастности лента позволяет отображать отдельный набор файлов изображений, когда активна тема с высокой контрастностью. Эти изображения могут быть 32 BPP или 4 BPP, с цветами, сопоставленными со специальной палитрой, где темные и светлые цвета инвертируются в зависимости от переднего плана и фона активной высококонтрастной темы.
В следующем примере показано, как ресурсы изображений с высокой контрастностью объявляются в разметке ленты:
<Command Name="cmdNew" Id="0xE100" Symbol="ID_CMD_NEW" LabelTitle="New document" Keytip="N" >
<Command.TooltipTitle>New (Ctrl+N)</Command.TooltipTitle>
<Command.TooltipDescription>Create a new document.</Command.TooltipDescription>
<Command.LargeImages>
<Image Source="cmdNew-32px.bmp" MinDPI="96" />
<Image Source="cmdNew-40px.bmp" MinDPI="120" />
<Image Source="cmdNew-48px.bmp" MinDPI="144" />
<Image Source="cmdNew-64px.bmp" MinDPI="192" />
</Command.LargeImages>
<Command.LargeHighContrastImages>
<Image Source="cmdNew-32px-HC.bmp" MinDPI="96" />
<Image Source="cmdNew-40px-HC.bmp" MinDPI="120" />
<Image Source="cmdNew-48px-HC.bmp" MinDPI="144" />
<Image Source="cmdNew-64px-HC.bmp" MinDPI="192" />
</Command.LargeHighContrastImages>
<Command.SmallImages>
<Image Source="cmdNew-16px.bmp" MinDPI="96" />
<Image Source="cmdNew-20px.bmp" MinDPI="120" />
<Image Source="cmdNew-24px.bmp" MinDPI="144" />
<Image Source="cmdNew-32px.bmp" MinDPI="192" />
</Command.SmallImages>
<Command.SmallHighContrastImages>
<Image Source="cmdNew-16px-HC.bmp" MinDPI="96" />
<Image Source="cmdNew-20px-HC.bmp" MinDPI="120" />
<Image Source="cmdNew-24px-HC.bmp" MinDPI="144" />
<Image Source="cmdNew-32px-HC.bmp" MinDPI="192" />
</Command.SmallHighContrastImages>
</Command>
Связанные темы