Указание ресурсов образа ленты

Как многофункциональная система представления команд платформа ленты 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

Недоступно

БЕЛЫЙ

 

Дополнительные сведения о форматах изображений, поддерживаемых платформой ленты, см. в следующих статьях:

Специальные возможности

Использование ресурсов изображений для предоставления информации, передачи функциональных возможностей управления и предоставления состояния приложения увеличивает потребность в специальных возможностях во время проектирования и разработки приложений.

Для базовой поддержки высокой контрастности лента позволяет отображать отдельный набор файлов изображений, когда активна тема с высокой контрастностью. Эти изображения могут быть 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>

Command.SmallImages

UI_PKEY_SmallImage

Command.LargeImages

UI_PKEY_LargeImage

Command.SmallHighContrastImages

UI_PKEY_SmallHighContrastImage

Command.LargeHighContrastImages

UI_PKEY_LargeHighContrastImage