Udostępnij przez


Ikony w aplikacjach systemu Windows

Ikony zapewniają skróconą wizualizację dla akcji, koncepcji lub produktu. Kompresując znaczenie do obrazu symbolicznego, ikony mogą przekraczać bariery językowe i pomóc zaoszczędzić cenny zasób: przestrzeń ekranu. Dobre ikony zharmonizują się z typografią i resztą języka projektowania. Nie mieszają metafor i przekazują tylko to, co konieczne, jak najszybciej i najprościej.

Wysuwany pasek poleceń z ikonami: dodaj — znak plus, edytuj — ołówek, udostępnij — strona i strzałka, oraz ustawienia — zębatka

Ikony mogą być wyświetlane w aplikacjach i poza nimi. W aplikacji używasz ikon do reprezentowania akcji, takiej jak kopiowanie tekstu lub przechodzenie do strony ustawień.

W tym artykule opisano ikony w interfejsie użytkownika aplikacji. Aby dowiedzieć się więcej o ikonach reprezentujących aplikację w systemie Windows (ikonach aplikacji), zobacz Ikony aplikacji.

Dowiedz się, kiedy używać ikon

Ikony mogą zaoszczędzić miejsce, ale kiedy należy ich używać?

Użyj ikony dla akcji, takich jak wycinanie, kopiowanie, wklejanie i zapisywanie, lub w przypadku elementów w menu nawigacji. Użyj ikony, jeśli użytkownik może łatwo zrozumieć, co oznacza ikona, i jest wystarczająco prosta, aby były jasne przy małych rozmiarach.

Nie używaj ikony, jeśli jej znaczenie nie jest jasne lub gdy wymaga to złożonego kształtu.

Użyj odpowiedniego typu ikony

Istnieje wiele sposobów tworzenia ikony. Możesz użyć czcionki symbolu, takiej jak czcionka Segoe Fluent Icon. Możesz utworzyć własny obraz oparty na wektorach. Można nawet użyć obrazu mapy bitowej, chociaż nie jest to zalecane. Poniżej przedstawiono podsumowanie sposobów dodawania ikony do aplikacji.

Aby dodać ikonę w aplikacji XAML, użyj IconElement lub IconSource.

W tej tabeli przedstawiono różne rodzaje ikon, które pochodzą z elementu IconElement i IconSource.

IconElement IconSource Description
AnimatedIcon AnimatedIconSource Reprezentuje ikonę, która wyświetla i kontroluje wizualizację, która może animować w odpowiedzi na zmiany interakcji użytkownika i stanu wizualizacji.
BitmapIcon BitmapIconSource Reprezentuje ikonę, która używa mapy bitowej jako zawartości.
FontIcon FontIconSource Reprezentuje ikonę, która używa glifu z określonej czcionki.
IconSourceElement N/A Reprezentuje ikonę, która używa IconSource jako swojej zawartości.
ImageIcon ImageIconSource Reprezentuje ikonę, która używa obrazu jako jego zawartości.
PathIcon PathIconSource Reprezentuje ikonę, która używa ścieżki wektorowej jako jej zawartości.
SymbolIcon SymbolIconSource Reprezentuje ikonę, która używa symbolu z zasobu SymbolThemeFontFamily jako jego zawartości.

IconElement kontra IconSource

IconElement jest elementem FrameworkElement, więc można go dodać do drzewa obiektów XAML tak samo jak każdy inny element interfejsu użytkownika aplikacji. Nie można go jednak dodać do ResourceDictionary i ponownie użyć jako zasobu udostępnionego.

IconSource jest podobna do IconElement; jednak ponieważ nie jest to FrameworkElement, nie można go używać jako autonomicznego elementu w interfejsie użytkownika, ale może być współużytkowany jako zasób. IconSourceElement to specjalny element ikony, który opakowuje element IconSource, dzięki czemu można go używać wszędzie tam, gdzie potrzebujesz elementu IconElement. Przykład tych funkcji przedstawiono w następnej sekcji.

Przykłady elementu IconElement

Możesz użyć IconElement-pochodnej klasy jako autonomicznego składnika interfejsu użytkownika.

W tym przykładzie pokazano, jak ustawić glyph ikony jako zawartość przycisku. Ustaw FontFamily przycisku, aby SymbolThemeFontFamily i jego właściwość zawartości na wartość Unicode glyph, którego chcesz użyć.

<Button FontFamily="{ThemeResource SymbolThemeFontFamily}"
        Content="&#xE768;"/>

przycisk z ikoną odtwarzania, kontur trójkąta wskazującego w prawo

Możesz również jawnie dodać jeden z obiektów elementu ikony wymienionych wcześniej, takich jak SymbolIcon. Zapewnia to więcej typów ikon do wyboru. Umożliwia również łączenie ikon i innych typów zawartości, takich jak tekst, jeśli chcesz.

<Button>
    <StackPanel>
        <SymbolIcon Symbol="Play"/>
        <TextBlock Text="Play" HorizontalAlignment="Center"/>
    </StackPanel>
</Button>

Przycisk z ikoną odtwarzania, konturem trójkąta skierowanego w prawo, z napisem

W tym przykładzie pokazano, jak można zdefiniować element FontIconSource w obiekcie ResourceDictionary, a następnie użyć elementu IconSourceElement do ponownego użycia zasobu w różnych miejscach aplikacji.

<!--App.xaml-->
<Application
   ...>
    <Application.Resources>
        <ResourceDictionary>
            ...
            <!-- Other app resources here -->

            <FontIconSource x:Key="CertIconSource" Glyph="&#xEB95;"/>

        </ResourceDictionary>
    </Application.Resources>
</Application>
<StackPanel Orientation="Horizontal">
    <IconSourceElement IconSource="{StaticResource CertIconSource}"/>
    <TextBlock Text="Certificate is expired" Margin="4,0,0,0"/>
</StackPanel>

<Button>
    <StackPanel>
        <IconSourceElement IconSource="{StaticResource CertIconSource}"/>
        <TextBlock Text="View certificate" HorizontalAlignment="Center"/>
    </StackPanel>
</Button>

Ikona certyfikatu z tekstem

Aplikacja Galeria WinUI 3 zawiera interaktywne przykłady większości kontrolek, funkcji i funkcji interfejsu WinUI 3. Pobierz aplikację ze Sklepu Microsoft lub pobierz kod źródłowy w witrynie GitHub

Właściwości ikony

Często umieszczasz ikony w interfejsie użytkownika, przypisując jeden do właściwości icon innego elementu XAML. Icon właściwości, które zawierają Source w nazwie, przyjmują element IconSource; w przeciwnym razie właściwość przyjmuje element IconElement.

Ta lista zawiera niektóre typowe elementy, które mają właściwość icon.

Polecenia/Działania Navigation Stan/Inne
AppBarButton.IconAppBarToggleButton.IconAutoSuggestBox.QueryIconMenuFlyoutItem.IconMenuFlyoutSubItem.IconSwipeItem.IconSourceXamlUICommand.IconSource NavigationViewItem.IconSelectorBarItem.IconTabViewItem.IconSource AnimatedIcon.FallbackIconSourceAnimatedIconSource.FallbackIconSourceIconSourceElement.IconSourceInfoBadge.IconSourceInfoBar.IconSourceTeachingTip.IconSource

Wskazówka

Te kontrolki można wyświetlić w aplikacji Galerii WinUI 3, aby zobaczyć przykłady użycia ikon.

Pozostałe przykłady na tej stronie pokazują, jak przypisać ikonę do właściwości icon kontrolki.

FontIcon i SymbolIcon

Najczęstszym sposobem dodawania ikon do aplikacji jest użycie ikon systemowych udostępnianych przez czcionki ikon w systemie Windows. System Windows 11 wprowadza nową czcionkę ikony systemu, Segoe Fluent Icon, która udostępnia ponad 1000 ikon zaprojektowanych dla języka Fluent Design. Może nie być intuicyjne uzyskanie ikony z czcionki, ale technologia wyświetlania czcionek w systemie Windows oznacza, że te ikony będą wyglądać ostro i wyraźnie na każdym wyświetlaczu, niezależnie od rozdzielczości i rozmiaru.

Ważne

domyślna rodzina czcionek

Zamiast bezpośrednio określać FontFamily, FontIcon i SymbolIcon używają rodziny czcionek zdefiniowanej przez zasób motywu XAML SymbolThemeFontFamily. Domyślnie ten zasób używa rodziny czcionek Segoe Fluent Icon. Jeśli aplikacja jest uruchamiana w systemie Windows 10 w wersji 20H2 lub starszej, rodzina czcionek Segoe Fluent Icon nie jest dostępna, a zasób SymbolThemeFontFamily wraca do rodziny czcionek Segoe MDL2 Assets.

Wyliczenie symboli

Wiele typowych glifów z SymbolThemeFontFamily jest zawartych w wyliczeniu symboli . Jeśli potrzebny glyph jest dostępny jako symbol, możesz użyć SymbolIcon w dowolnym miejscu, w którym będzie używana czcionka FontIcon z domyślną rodziną czcionek.

Nazwy symboli służą również do ustawiania właściwości icon w języku XAML przy użyciu składni atrybutów , na przykład

<AppBarButton Icon="Send" Label="Send"/>

przycisk z ikoną wysyłania, z konturem strzałki skierowanej w prawo

Wskazówka

Nazwy symboli można użyć tylko do ustawienia właściwości icon przy użyciu skróconej składni atrybutu . Wszystkie inne typy ikon muszą być ustawione przy użyciu dłuższej składni elementu właściwości , jak pokazano w innych przykładach na tej stronie.

Ikony czcionek

Tylko mały podzbiór glifów Segoe Fluent Icon jest dostępny w wyliczeniu Symbol . Aby skorzystać z innego z dostępnych glifów, użyj FontIcon. W tym przykładzie pokazano, jak utworzyć AppBarButton za pomocą ikony SendFill.

<AppBarButton Label="Send">
    <AppBarButton.Icon>
        <FontIcon Glyph="&#xE725;"/>
    </AppBarButton.Icon>
</AppBarButton>

przycisk z ikoną wysyłania, wypełniona końcówka strzałki wskazująca w prawo

Jeśli nie określisz FontFamilylub określisz właściwość FontFamily, która nie jest dostępna w systemie w czasie wykonywania, czcionka FontIcon powróci do domyślnej rodziny czcionek zdefiniowanej przez zasób motywu SymbolThemeFontFamily.

Możesz również określić ikonę przy użyciu wartości Glyph z dowolnej dostępnej czcionki. W tym przykładzie pokazano, jak używać symbolu Glyph z czcionki Emoji interfejsu użytkownika Segoe.

<AppBarToggleButton Label="FontIcon">
    <AppBarToggleButton.Icon>
        <FontIcon FontFamily="Segoe UI Emoji" Glyph="&#x25B6;"/>
    </AppBarToggleButton.Icon>
</AppBarToggleButton>

Przycisk z ikoną odtwarzania z czcionki Segoe UI Emoji, białą strzałką skierowaną w prawo na niebieskim tle

Aby uzyskać więcej informacji i przykładów, zobacz dokumentację klasy FontIcon i SymbolIcon.

Wskazówka

Użyj strony Ikonografia w aplikacji Galeria WinUI 3, aby wyświetlić, wyszukać i skopiować kod dla wszystkich ikon dostępnych w ikonach Segoe Fluent.

AnimowanaIkona

Ruch jest ważną częścią języka Fluent Design. Animowane ikony zwracają uwagę na konkretne punkty wejścia, informują o zmianach stanu oraz dodają radości interakcji.

Za pomocą animowanych ikon można implementować lekkie, wektorowe ikony z ruchem przy użyciu animacji.

Aby uzyskać więcej informacji i przykładów, zobacz Animowane ikony i dokumentację klasy AnimatedIcon.

PathIcon

Możesz użyć PathIcon, aby utworzyć niestandardowe ikony używające kształtów opartych na wektorach, aby zawsze wyglądały ostro. Jednak tworzenie kształtu przy użyciu geometrii XAML jest skomplikowane, ponieważ należy indywidualnie określić każdy punkt i krzywą.

W tym przykładzie przedstawiono dwa różne sposoby definiowania geometrii używanej w pliku PathIcon.

<AppBarButton Label="PathIcon">
    <AppBarButton.Icon>
        <PathIcon Data="F1 M 16,12 20,2L 20,16 1,16"/>
    </AppBarButton.Icon>
</AppBarButton>

<AppBarButton Label="Circles">
    <AppBarButton.Icon>
        <PathIcon>
            <PathIcon.Data>
                <GeometryGroup>
                    <EllipseGeometry RadiusX="15" RadiusY="15" Center="90,90" />
                    <EllipseGeometry RadiusX="50" RadiusY="50" Center="90,90" />
                    <EllipseGeometry RadiusX="70" RadiusY="70" Center="90,90" />
                    <EllipseGeometry RadiusX="100" RadiusY="100" Center="90,90" />
                    <EllipseGeometry RadiusX="120" RadiusY="120" Center="90,90" />
                </GeometryGroup>      
            </PathIcon.Data>
        </PathIcon>
    </AppBarButton.Icon>
</AppBarButton>

przycisk Z ikoną ścieżki niestandardowej przycisk Z ikoną ścieżki niestandardowej, dwa okręgi wokół punktu środkowego

Aby dowiedzieć się więcej na temat używania klas Geometry do tworzenia kształtów niestandardowych, zobacz dokumentację klas i polecenia przesuwania i rysowania dla geometrii. Również zapoznaj się z dokumentacją geometrii WPF . Klasa WinUI Geometry nie ma wszystkich tych samych funkcji co klasa WPF, ale tworzenie kształtów jest takie samo dla obu.

Aby uzyskać więcej informacji i przykładów, zobacz dokumentację klasy PathIcon.

BitmapIcon i ImageIcon

Możesz użyć BitmapIcon lub ImageIcon, aby utworzyć ikonę z pliku obrazu (takiego jak PNG, GIF lub JPEG), chociaż nie zalecamy jej, jeśli jest dostępna inna opcja. Obrazy map bitowych są tworzone o określonym rozmiarze, więc muszą być skalowane w górę lub w dół w zależności od wielkości ikony i rozdzielczości ekranu. Gdy obraz jest skalowany w dół (skurczony), może pojawić się rozmyty. Po powiększeniu może wyglądać kwadratowo i rozpikselowanie.

Ikona bitmapowa

Domyślnie BitmapIcon usuwa wszystkie informacje o kolorze z obrazu i wyświetla wszystkie nieprzezroczyste piksele w kolorze pierwszego planu. Aby utworzyć ikonę monochromatyczną, użyj obrazu solidnego na przezroczystym tle w formacie PNG. Inne formaty obrazów najwyraźniej będą ładowane bez błędu, ale powodują jednolity blok koloru na pierwszym planie.

<AppBarButton Label="ImageIcon">
    <AppBarButton.Icon>
        <ImageIcon Source="ms-appx:///Assets/slices3.png"/>
    </AppBarButton.Icon>
</AppBarButton>

przycisk z ikoną mapy bitowej, wycinki w kształcie kołu w kolorze czarnym i białym

Domyślne zachowanie można zastąpić, ustawiając właściwość ShowAsMonochrome na false. W takim przypadku bitmapicon zachowuje się tak samo jak ImageIcon dla obsługiwanych typów plików mapy bitowej (pliki SVG nie są obsługiwane).

<BitmapIcon UriSource="ms-appx:///Assets/slices3.jpg" 
            ShowAsMonochrome="False"/>

Aby uzyskać więcej informacji i przykładów, zobacz dokumentację klasy BitmapIcon.

Wskazówka

Użycie BitmapIcon jest podobne do użycia BitmapImage; Zobacz klasę BitmapImage, aby uzyskać więcej informacji dotyczących BitmapIcon, takich jak ustawienie właściwości UriSource w kodzie.

IkonaObrazu

ImageIcon przedstawia obraz dostarczony przez jedną z klas pochodnych ImageSource. Najczęstszym rozwiązaniem jest BitmapSource, ale jak wspomniano wcześniej, nie zalecamy obrazów map bitowych dla ikon ze względu na potencjalne problemy ze skalowaniem.

Skalowalne zasoby grafiki wektorowej (SVG) są idealne dla ikon, ponieważ zawsze wyglądają ostro w dowolnym rozmiarze lub rozdzielczości. Można użyć SVGImageSource z komponentem ImageIcon, który obsługuje bezpieczny tryb statyczny zgodny z specyfikacją SVG, ale nie obsługuje animacji ani interakcji. Aby uzyskać więcej informacji, zobacz SVGImageSource i obsługa SVG.

ObrazIcon ignoruje właściwość Pierwszego planu, więc zawsze wyświetla obraz w oryginalnym kolorze. Ponieważ kolor pierwszego planu jest ignorowany, ikona nie reaguje na zmiany stanu wizualizacji, gdy jest używany w przycisku lub innej podobnej kontrolce.

<AppBarButton Label="ImageIcon">
    <AppBarButton.Icon>
        <ImageIcon Source="ms-appx:///Assets/slices3.svg"/>
    </AppBarButton.Icon>
</AppBarButton>

przycisk z ikoną obrazka, kawałki ciasta w różnych kolorach

Aby uzyskać więcej informacji i przykładów, zobacz dokumentację klasy ImageIcon.

Wskazówka

Użycie interfejsu ImageIcon jest podobne do kontrolki Obraz; Zobacz klasę Image, aby uzyskać więcej informacji dotyczących interfejsu ImageIcon. Jedną z godnych uwagi różnic jest to, że w przypadku ImageIcon używana jest tylko pierwsza ramka wieloklatkowego obrazu (na przykład animowany GIF). Aby użyć animowanych ikon, zobacz AnimatedIcon.