Icônes dans les applications Windows

Les icônes fournissent un raccourci visuel pour une action, un concept ou un produit. En compressant la signification dans une image symbolique, les icônes peuvent traverser les barrières linguistiques et aider à conserver une ressource précieuse : espace d’écran. Les icônes de qualité s’harmonisent efficacement avec la typographie et avec le reste du langage de conception. Ils ne mélangent pas les métaphores, et ils communiquent uniquement ce qui est nécessaire, aussi rapidement et simplement que possible.

Menu volant de barre de commandes avec des icônes pour ajouter - signe plus, modifier - crayon, partager - page et flèche et paramètres - engrenage

Les icônes peuvent apparaître dans les applications et en dehors de celles-ci. Dans votre application, vous utilisez des icônes pour représenter une action, comme copier du texte ou accéder à la page des paramètres.

Cet article décrit les icônes dans l’interface utilisateur de votre application. Pour en savoir plus sur les icônes qui représentent votre application dans Windows (icônes d’application), consultez icônes d’application.

Savoir quand utiliser des icônes

Les icônes permettent d'économiser de l’espace, mais quand faut-il les utiliser ?

Utilisez une icône pour les actions, telles que couper, copier, coller et enregistrer, ou pour les éléments d’un menu de navigation. Utilisez une icône s’il est facile pour l’utilisateur de comprendre ce que signifie l’icône et si elle est suffisamment simple pour être claire à taille réduite.

N’utilisez pas une icône si sa signification n’est pas évidente, ou si le fait de la rendre claire requiert une forme complexe.

Utiliser le type d’icône approprié

Il existe de nombreuses façons de créer une icône. Vous pouvez utiliser une police de symboles comme la police Segoe Fluent Icon. Vous pouvez créer votre propre image vectorielle. Vous pouvez même utiliser une image bitmap, bien que nous ne le conseillions pas. Voici un résumé des façons dont vous pouvez ajouter une icône à votre application.

Pour ajouter une icône dans votre application XAML, vous utilisez un IconElement ou une IcôneSource.

Ce tableau présente les différents types d’icônes dérivés d’IconElement et d’IconSource.

IconElement IconSource Description
AnimatedIcon AnimatedIconSource Représente une icône qui affiche et contrôle un visuel qui peut s’animer en réponse aux modifications d’interaction utilisateur et d’état visuel.
BitmapIcon BitmapIconSource Représente une icône qui utilise une bitmap comme contenu.
FontIcon FontIconSource Représente une icône qui utilise un glyphe de la police spécifiée.
IconSourceElement S/O Représente une icône qui utilise une IconSource comme contenu.
ImageIcon ImageIconSource Représente une icône qui utilise une image comme contenu.
PathIcon PathIconSource Représente une icône qui utilise un chemin d’accès vectoriel comme contenu.
SymbolIcon SymbolIconSource Représente une icône qui utilise un glyphe de la SymbolThemeFontFamily ressource comme contenu.

IconElement et IconSource

IconElement est un FrameworkElement. Il peut donc être ajouté à l’arborescence d’objets XAML comme n’importe quel autre élément de l’interface utilisateur de votre application. Toutefois, il ne peut pas être ajouté à un ResourceDictionary et réutilisé en tant que ressource partagée.

IconSource est similaire à IconElement ; toutefois, car il ne s’agit pas d’un FrameworkElement, il ne peut pas être utilisé comme élément autonome dans votre interface utilisateur, mais il peut être partagé en tant que ressource. IconSourceElement est un élément d’icône spécial qui encapsule une IconSource pour pouvoir l’utiliser n’importe où vous avez besoin d’un IconElement. Un exemple de ces fonctionnalités est illustré dans la section suivante.

Exemples IconElement

Vous pouvez utiliser une classe dérivée d’IconElement comme composant d’interface utilisateur autonome.

Cet exemple montre comment définir un glyphe d’icône comme contenu d’un bouton. Définissez fontFamily SymbolThemeFontFamily du bouton sur et sa propriété de contenu sur la valeur Unicode du glyphe que vous souhaitez utiliser.

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

Bouton avec l’icône de lecture, contour d’un triangle pointant vers la droite

Vous pouvez également ajouter explicitement l’un des objets d’élément d’icône répertoriés précédemment, comme SymbolIcon. Cela vous donne plus de types d’icônes à choisir. Il vous permet également de combiner des icônes et d’autres types de contenu, tels que du texte, si vous le souhaitez.

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

Bouton avec l’icône de lecture, contour d’un triangle pointant vers la droite, avec le texte lu en dessous

Cet exemple montre comment définir une FontIconSource dans un ResourceDictionary, puis utiliser un IconSourceElement pour réutiliser la ressource à différents emplacements de votre application.

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

Une icône de certificat avec le certificat de texte a expiré et un bouton avec l’icône de certificat et le certificat d’affichage de texte

L’application WinUI 3 Gallery comprend des exemples interactifs de la plupart des contrôles et des fonctionnalités WinUI 3. Procurez-vous l’application sur le Microsoft Store ou le code source sur GitHub.

Propriétés d’icône

Vous placez souvent des icônes dans votre interface utilisateur en affectant une à une icon propriété d’un autre élément XAML. Icon les propriétés qui figurent Source dans le nom prennent une IcôneSource ; sinon, la propriété prend un IconElement.

Cette liste affiche certains éléments courants qui ont une icon propriété.

Commandes/actions Navigation État/Autre
AppBarButton.Icon AppBarToggleButton.Icon AutoSuggestBox.QueryIcon MenuFlyoutItem.Icon MenuFlyoutSubItem.Icon SwipeItem.Icon IconSource XamlUICommand.IconSource NavigationViewItem.Icon SelectorBarItem.Icon TabViewItem.IconSource AnimatedIcon.FallbackIconSource AnimatedIconSource.FallbackIconSource IconSourceElement.IconSource InfoBadge.IconSource InfoBar.IconSource TeachingTip.IconSource

Conseil

Vous pouvez afficher ces contrôles dans l’application galerie WinUI 3 pour voir des exemples de la façon dont les icônes sont utilisées avec elles.

Les autres exemples de cette page montrent comment affecter une icône à la icon propriété d’un contrôle.

FontIcon et SymbolIcon

La façon la plus courante d’ajouter des icônes à votre application consiste à utiliser les icônes système fournies par les polices d’icône dans Windows. Windows 11 introduit une nouvelle police d’icône système, Segoe Fluent Icons, qui fournit plus de 1 000 icônes conçues pour le langage Fluent Design. Il peut ne pas être intuitif d’obtenir une icône à partir d’une police, mais la technologie d’affichage de police Windows signifie que ces icônes seront nettes et nettes sur n’importe quel affichage, à n’importe quelle résolution et à n’importe quelle taille.

Important

Famille de polices par défaut

Au lieu de spécifier directement une FontFamily , FontIcon et SymbolIcon utilisent la famille de polices définie par la SymbolThemeFontFamily ressource de thème XAML. Par défaut, cette ressource utilise la famille de polices Segoe Fluent Icon. Si votre application est exécutée sur Windows 10, version 20H2 ou antérieure, la famille de polices Segoe Fluent Icon n’est pas disponible et la SymbolThemeFontFamily ressource revient à la famille de polices Segoe MDL2 Assets à la place.

Énumération Symbol

De nombreux glyphes courants de l’énumération SymbolThemeFontFamily Symbol sont inclus dans l’énumération Symbol . Si le glyphe dont vous avez besoin est disponible en tant que symbole, vous pouvez utiliser un SymbolIcon partout où vous utiliseriez un FontIcon avec la famille de polices par défaut.

Vous utilisez également des noms de symboles pour définir une icon propriété en XAML à l’aide de la syntaxe d’attribut, comme ceci

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

Bouton avec l’icône d’envoi, contour d’une flèche pointant vers la droite

Conseil

Vous ne pouvez utiliser les noms de symboles que pour définir une icon propriété à l’aide de la syntaxe d’attribut raccourcie. Tous les autres types d’icônes doivent être définis à l’aide de la syntaxe d’élément de propriété plus longue, comme illustré dans d’autres exemples de cette page.

Icônes de police

Seuls un petit sous-ensemble de glyphes Segoe Fluent Icon sont disponibles dans l’énumération Symbol . Pour utiliser l’un des autres glyphes disponibles, utilisez un FontIcon. Cet exemple montre comment créer un AppBarButton avec l’icône SendFill .

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

Bouton avec l’icône de remplissage d’envoi, une flèche remplie pointant vers la droite

Si vous ne spécifiez pas de FontFamily ou si vous spécifiez un FontFamily qui n’est pas disponible sur le système au moment de l’exécution, le FontIcon revient à la famille de polices par défaut définie par la ressource de SymbolThemeFontFamily thème.

Vous pouvez également spécifier une icône à l’aide d’une valeur Glyphe à partir de n’importe quelle police disponible. Cet exemple montre comment utiliser un Glyphe à partir de la police Emoji de l’interface utilisateur Segoe.

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

Bouton avec l’icône de lecture de la police Segoe UI Emoji, une flèche blanche pointant vers la droite sur un arrière-plan bleu

Pour plus d’informations et d’exemples, consultez la documentation de la classe FontIcon et SymbolIcon .

Conseil

Utilisez la page Iconographie dans l’application galerie WinUI 3 pour afficher, rechercher et copier du code pour toutes les icônes disponibles dans Les icônes Segoe Fluent.

AnimatedIcon

Le mouvement est une partie importante du langage Fluent Design. Les icônes animées attirent l’attention sur des points d’entrée spécifiques, fournissent des commentaires de l’état à l’état et ajoutent un plaisir à une interaction.

Vous pouvez utiliser des icônes animées pour implémenter des icônes légères et vectorielles avec mouvement à l’aide d’animations Lottie .

Pour plus d’informations et d’exemples, consultez les icônes animées et la documentation de la classe AnimatedIcon .

PathIcon

Vous pouvez utiliser un PathIcon pour créer des icônes personnalisées qui utilisent des formes vectorielles, de sorte qu’elles semblent toujours nettes. Toutefois, la création d’une forme à l’aide d’une géométrie XAML est compliquée, car vous devez spécifier individuellement chaque point et chaque courbe.

Cet exemple montre deux façons différentes de définir la géométrie utilisée dans un 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>

Bouton avec une icône de chemin d’accès personnaliséBouton avec une icône de chemin personnalisé, deux cercles autour d’un point central

Pour en savoir plus sur l’utilisation de classes Geometry pour créer des formes personnalisées, consultez la documentation de la classe et les commandes Move et draw pour les géométries. Consultez également la documentation WPF Geometry. La classe Geometry WinUI n’a pas toutes les mêmes fonctionnalités que la classe WPF, mais la création de formes est la même pour les deux.

Pour plus d’informations et d’exemples, consultez la documentation de la classe PathIcon .

BitmapIcon et ImageIcon

Vous pouvez utiliser bitmapIcon ou ImageIcon pour créer une icône à partir d’un fichier image (par exemple PNG, GIF ou JPEG), bien que nous ne le recommandons pas si une autre option est disponible. Les images bitmap sont créées dans une taille spécifique, donc elles doivent être mises à l’échelle pour les agrandir ou les réduire en fonction de la taille d'icône souhaitée et de la résolution de l’écran. Lorsque l’image est réduite (réduite), elle peut apparaître floue. Lorsqu’elle est mise à l’échelle, elle peut apparaître bloquée et pixelisée.

BitmapIcon

Par défaut, une bitmapIcon supprime toutes les informations de couleur de l’image et affiche tous les pixels non transparents dans la couleur de premier plan . Pour créer une icône monochrome, utilisez une image solide sur un arrière-plan transparent au format PNG. D’autres formats d’image se chargent apparemment sans erreur, mais entraînent un bloc unie de la couleur de premier plan.

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

Un bouton avec une icône bitmap, des tranches en forme de secteurs en noir et blanc

Vous pouvez remplacer le comportement par défaut en définissant la propriété ShowAsMonochrome sur false. Dans ce cas, BitmapIcon se comporte de la même façon qu’un ImageIcon pour les types de fichiers bitmap pris en charge (les fichiers SVG ne sont pas pris en charge).

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

Pour plus d’informations et d’exemples, consultez la documentation de la classe BitmapIcon .

Conseil

L’utilisation de BitmapIcon est similaire à l’utilisation de BitmapImage ; Consultez la classe BitmapImage pour plus d’informations applicables à BitmapIcon, comme la définition de la propriété UriSource dans le code.

ImageIcon

ImageIcon montre l’image fournie par l’une des classes dérivées d’ImageSource. Le plus courant est BitmapSource, mais comme mentionné précédemment, nous ne recommandons pas les images bitmap pour les icônes en raison de problèmes de mise à l’échelle potentiels.

Les ressources SVG (Scalable Vector Graphics) sont idéales pour les icônes, car elles semblent toujours nettes à n’importe quelle taille ou résolution. Vous pouvez utiliser svgImageSource avec imageIcon, qui prend en charge le mode statique sécurisé à partir de la spécification SVG, mais ne prend pas en charge les animations ou les interactions. Pour plus d’informations, consultez la prise en charge svgImageSource et SVG.

ImageIcon ignore la propriété Foreground . Elle affiche donc toujours l’image dans sa couleur d’origine. Étant donné que la couleur de premier plan est ignorée, l’icône ne répond pas aux modifications d’état visuel lorsqu’elle est utilisée dans un bouton ou un autre contrôle similaire.

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

Bouton avec une icône d’image, segments en forme de secteurs dans différentes couleurs

Pour plus d’informations et d’exemples, consultez la documentation de la classe ImageIcon .

Conseil

L’utilisation d’ImageIcon est similaire au contrôle Image ; consultez la classe Image pour plus d’informations applicables à ImageIcon. Une différence notable est que avec ImageIcon, seul le premier cadre d’une image multi-images (comme un GIF animé) est utilisé. Pour utiliser des icônes animées, consultez AnimatedIcon.