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.
Poniższy zrzut ekranu przedstawia ten sam rozmiar wstążki z małymi obrazami dla kontrolek Zoom
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.
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:
- struktura BITMAPINFOHEADER — opisuje format pikseli BPP ARGB 32.
- funkcja CreateDIBSection — opisuje sposób tworzenia obrazu w formacie pikseli 32 BPP ARGB.
- funkcja LoadImage — opisuje sposób ładowania obrazu w 32 BPP ARGB formacie pikseli.
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>
Tematy pokrewne