Udostępnij za pośrednictwem


Określanie zasobów obrazu wstążki

Jako bogaty system prezentacji poleceń, platforma wstążki systemu Windows została zaprojektowana do szerokiej obsługi zasobów obrazów w interfejsie użytkownika wstążki. Wszystkie zasoby obrazów są deklarowane w znaczniki wstążki lub zapytania z aplikacji hosta wstążki.

W przypadku systemu Windows 8 i nowszych platforma wstążki obsługuje następujące formaty graficzne: 32-bitowe pliki mapy bitowej ARGB (BMP) i pliki przenośnej grafiki sieciowej (PNG) z przezroczystością.

W przypadku systemu Windows 7 i starszych zasoby obrazów muszą być zgodne ze standardowym formatem grafiki BMP używanym w systemie Windows.

Notatka

Błąd kompilacji może wystąpić, jeśli do platformy jest dostarczany nieobsługiwany format obrazu.

 

Rozmiary obrazów

Aby zapewnić większą elastyczność układów kontrolek wstążki podczas zmiany rozmiaru okna aplikacji, struktura wstążki akceptuje i renderuje obrazy w jednym z dwóch rozmiarów: duży lub mały.

Poniższe obrazy ilustrują aplikację wstążki, która obsługuje wiele rozmiarów wstążki za pomocą elastycznych układów kontrolek i zastępowania dużych obrazów małymi obrazami, jeśli są dostępne.

Poniższy zrzut ekranu przedstawia wstążkę z dużymi obrazami dla kontrolek Zoom.

zrzut ekranu przedstawiający wstążkę, która używa dużych obrazów dla kontrolek powiększenia.

Poniższy zrzut ekranu przedstawia ten sam rozmiar wstążki z małymi obrazami dla kontrolek Zoom

zrzut ekranu przedstawiający wstążkę, która używa małych obrazów dla kontrolek powiększenia.

Poniższy zrzut ekranu przedstawia wstążkę w stanie ukrytym. Wstążka jest ukryta, gdy wszystkie potencjalne układy kontrolek zostały wyczerpane i nie można jej wyświetlić w sposób użyteczny w obszarze roboczym aplikacji.

zrzut ekranu przedstawiający zwiniętą wstążkę.

W przypadku dowolnego obrazu dokładny rozmiar pikseli zależy od rozdzielczości ekranu lub kropek na cal (dpi) używanego monitora. Przy rozdzielczości 96 dpi duże obrazy mają rozmiar 32x32 pikseli, a małe obrazy mają rozmiar 16x16 pikseli. Rozmiary obrazów zwiększają się w sposób liniowy względem dpi, jak pokazano w poniższej tabeli.

DPI Mały obraz Duży obraz
96 dpi 16x16 pikseli 32x32 piksele
120 dpi 20x20 pikseli 40x40 pikseli
144 dpi 24x24 piksele 48x48 pikseli
192 dpi 32x32 piksele 64x64 piksele

 

Interfejs wstążki dostosowuje wielkość zasobów graficznych w razie potrzeb. Jednak ze względu na to, że zmiana rozmiaru może spowodować niepożądane artefakty i degradację obrazu, zdecydowanie zaleca się, aby aplikacja udostępniała niewielki zestaw zasobów obrazu obejmujących różne powszechnie używane ustawienia dpi. Jeśli nie można odnaleźć dokładnego dopasowania, najbliższy obraz zostanie przeskalowany w górę lub w dół.

Aby to ułatwić, zasoby obrazu można zadeklarować w kodzie wstążki przy użyciu zestawu elementów Image dla każdego elementu Command. W czasie wykonywania struktura wybiera obraz do wyświetlenia na podstawie atrybutu MinDPI każdego elementu Image.

Ważny

Gdy kolekcja zasobów obrazów przeznaczonych do obsługi określonych ustawień dpi ekranu jest dostarczana do frameworka wstążki za pomocą zestawu elementów obrazu , framework używa obrazu z wartością atrybutu MinDPI, która odpowiada bieżącemu ustawieniu dpi ekranu.

Jeśli żaden element Image nie zostanie zadeklarowany z wartością MinDPI zgodną z bieżącym ustawieniem dpi ekranu, framework wybiera obraz , który ma najbliższą wartość MinDPI mniejszą niż bieżące ustawienie dpi ekranu i przeskalowuje zasób obrazu. W przeciwnym razie, jeśli żaden element Image zostanie zadeklarowany z wartością atrybutu MinDPI mniejszą niż bieżące ustawienie dpi ekranu, struktura wybiera najbliższą wartość MinDPI większą niż bieżące ustawienie dpi ekranu i skaluje zasób obrazu w dół.

 

W poniższym przykładzie pokazano, jak zadeklarować zestaw obrazów, aby uwzględnić różne rozmiary wstążki i ustawienia systemowe.

<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>

Jeśli obrazy zadeklarowane w znacznikach stają się nieważne w czasie wykonywania z jakiegokolwiek powodu, aplikacja hosta jest odpytywana w celu uzyskania nowych obrazów. Po wygenerowaniu i załadowaniu tych obrazów programowo aplikacja powinna podjąć próbę zwrócenia obrazów o rozmiarze zgodnie z domyślnymi rozmiarami ikon systemu określonymi przez metryki systemu SM_CXICON.

Notatka

Duże obrazy mają rozmiar SM_CXICON na SM_CXICON, a małe obrazy mają rozmiar SM_CXICON/2 na SM_CXICON/2.

 

Głębokość koloru, przezroczystość i kontrast

Oczekuje się, że zwykłe obrazy powinny mieć format ARGB o głębi 32 bitów na piksel i być skalowane do domyślnego rozmiaru ikony systemu. Ten format obsługuje zarówno przezroczystość, jak i antyaliasing (przy użyciu 8 bitów na kanał).

Ostrzeżenie

Wiele narzędzi do edycji obrazów nie zachowuje kanału alfa o najwyższej kolejności 8-bitowej podczas ładowania lub zapisywania 32 obrazów BPP.

 

Aby obraz był poprawnie wyświetlany w trybie dużego kontrastu, musi być w formacie pikseli upakowanych w paletę 4 BPP. Gdy obraz jest renderowany, struktura wstążki ponownie mapuje określone kolory na podstawie kontekstu dużego kontrastu obrazu.

W poniższej tabeli wymieniono zachowanie renderowania kolorów o wysokim kontraście w środowisku.

Kolor pikseli

Wartość RGB

Zachowanie

Białe tło

Ciemne tło

magenta

800080

Przejrzysty

Przejrzysty

CZARNY

000000

COLOR_WINDOWTEXT

BIAŁY

BIAŁY

FFFFFF

COLOR_WINDOW (Kolor okna)

CZARNY

CIEMNOSZARY

808080

KOLOR_3DCIEŃ

COLOR_3DSHADOW

SZARY

C0C0C0

COLOR_3DFACE

COLOR_3DFACE

JASNOSZARY

DFDFDF

KOLOR_3DŚWIATŁO

COLOR_3DLIGHT

CIEMNONIEBIESKI

000080

N/a

BIAŁY

 

Aby uzyskać więcej informacji na temat formatów obrazów obsługiwanych przez strukturę wstążki, zobacz następujące tematy:

Dostępność

Poleganie na zasobach obrazu w celu dostarczania informacji, przekazywania funkcji sterowania i uwidaczniania stanu aplikacji zwiększa potrzebę wymagań dotyczących ułatwień dostępu podczas projektowania i tworzenia aplikacji.

W przypadku podstawowej obsługi dużego kontrastu wstążka umożliwia wyświetlanie oddzielnego zestawu plików obrazów, gdy motyw o wysokim kontraście jest aktywny. Zdjęcia te mogą być 32 BPP lub 4 BPP, których kolory są odwzorowane na specjalnej palecie, gdzie ciemne i jasne kolory są odwrócone w zależności od kolorów pierwszego planu i tła aktywnego motywu o wysokim kontraście.

W poniższym przykładzie pokazano, jak zasoby obrazów o wysokim kontraście są deklarowane w znacznikach wstążki:

<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>

Komenda.MałeObrazy

UI_PKEY_SmallImage

Command.LargeImages

UI_PKEY_LargeImage

Komenda.MałeObrazyOWysokimKontraście

UI_PKEY_SmallHighContrastImage

Polecenie.DużeObrazyWysokiegoKontrastu

UI_PKEY_LargeHighContrastImage