Formats d'images vectorielles dans Qt Image Formats
Qt prend en charge de nombreux formats de fichiers standard pour le chargement de données graphiques, ce qui permet aux applications d'importer du contenu produit avec d'autres outils.
Cet article se concentre sur les images vectorielles et sur les considérations à prendre en compte lors de la production de contenus graphiques vectoriels destinés à être utilisés dans une application Qt.
Note : Pour des informations générales sur la prise en charge des graphiques 2D par Qt, voir la documentation 2D Graphics in Qt.
Format de fichier : SVG
Les fichiers SVG peuvent être chargés de deux manières différentes en Qt Quick: soit en tant qu'image tramée par logiciel à l'aide du composant Image, soit en utilisant le rendu accéléré par le matériel avec VectorImage (y compris en convertissant le fichier à l'avance à l'aide de svgtoqml).
En outre, QSvgRenderer fournit un accès général au logiciel de tramage. QSvgWidget et QGraphicsSvgItem fournissent des API de commodité pour l'intégration du contenu SVG dans les applications. Qt Widgets dans les applications.
Comme base, Qt supporte les caractéristiques statiques du profil SVG 1.2 Tiny. Une liste détaillée des caractéristiques prises en charge par ce profil est disponible dans la spécification SVG 1.2 Tiny.
En outre, certaines fonctionnalités étendues sont prises en charge. Celles-ci ne sont actuellement supportées que par le rasterizer logiciel et non par le moteur de rendu accéléré par le matériel dans VectorImage ou svgtoqml.
Les fonctions interactives du SVG ne sont pas prises en charge, mais l'interaction peut facilement être mise en œuvre dans les formats Qt Quick ou Qt Widgets. Certains types d'animation spécifiques sont également pris en charge, en utilisant soit le format SMIL, soit les images clés CSS.
Voici une liste de haut niveau des fonctionnalités prises en charge et non prises en charge, qui donne un aperçu de ce à quoi il faut s'attendre. Les fonctionnalités non prises en charge seront ignorées dans la mesure du possible, de sorte que les fichiers SVG qui dépendent de fonctionnalités non prises en charge s'afficheront toujours, mais ils pourront présenter des omissions ou des erreurs.
| Fonctionnalité de haut niveau | Rastériseur logiciel | VectorImage | Commentaire |
|---|---|---|---|
| Transformations | Oui | Oui | |
| Formes de base | Oui | Oui | Cercles, rectangles, ellipses, lignes, polylignes et polygones |
| Formes arbitraires | Oui | Oui | Trajectoires composites construites à partir de courbes et de lignes de Bézier arbitraires. |
| Images matricielles | Oui | Oui | Incorporées et stockées sur le système de fichiers |
| Indirections | Oui | Oui | En particulier l'élément "utilisation". |
| Traitement conditionnel | Oui | Oui | En particulier l'élément "switch". |
| Mises en page de textes simples | Oui | Oui | |
| Polices intégrées | Oui | Oui | |
| Remplissages en couleur unie | Oui | Oui | |
| Remplissages en dégradé | Oui | Oui | |
| Traits personnalisables | Oui | Oui | Largeur personnalisable, capitales de ligne, jonctions de ligne et tirets |
| Traits esthétiques | Oui | Non | Contours qui ne s'adaptent pas à la vue |
| Traits dégradés | Oui | Oui | |
| Multimédia | Non | Non | |
| Scripts | Non | Non | |
| Liaison | Non | Non |
En outre, les fonctionnalités étendues suivantes sont prises en charge par SVG 1.1 et SVG 2.0 :
| Fonctionnalité de haut niveau | Rastériseur logiciel | VectorImage | Commentaire |
|---|---|---|---|
| Masques | Oui | Oui | |
| Chemins d'écrêtage | Non | Non | |
| Motifs | Oui | Non | |
| Marqueurs | Oui | Non | |
| Symboles réutilisables | Oui | Oui | |
| Filtres de post-traitement | Oui | Oui | feColorMatrix, feFlood, feGaussianBlur, feOffset et feMerge. |
Enfin, les animations suivantes sont prises en charge (les animations qui ne figurent pas dans cette liste ne sont pas prises en charge pour le moment). Pour de meilleurs résultats, les animations doivent être exportées au format CSS keyframes.
| Fonctionnalité d'animation | Rasterizer logiciel | VectorImage | Commentaire |
|---|---|---|---|
| Animations de transformation | Oui | Oui | |
| Animations de couleur | Oui | Oui | |
| Animations d'opacité | Oui | Oui | |
| Animations de décalage de trajectoire | Oui | Oui | Animation de la position et de l'orientation d'un élément le long d'un chemin |
Format de fichier : Lottie
Comme pour le SVG, il existe différentes façons de charger des fichiers au format Lottie dans Qt.
Le type LottieAnimation charge une image et l'affiche à l'aide d'un logiciel de tramage, comme le fait QSvgRenderer pour SVG.
En outre, le rendu accéléré par le matériel est possible en utilisant VectorImage et l'outil lottietoqml.
Afin d'utiliser les fichiers Lottie avec VectorImage, le plugin vectorimageformats inclus dans le module Qt Lottie Animation doit être déployé avec l'application. En outre, la propriété assumeTrustedSource de VectorImage doit être définie sur true.
L'outil lottietoqml peut être utilisé pour préconvertir les fichiers source Lottie en QML. Un exemple peut être trouvé dans l'exemple lottietoqml.
Voici une liste des fonctionnalités de haut niveau prises en charge par le type LottieAnimation (rasterizer logiciel) et VectorImage (y compris la pré-conversion des fichiers à l'aide de lottietoqml).
| Fonctionnalité de haut niveau | LottieAnimation | VectorImage | Commentaire |
|---|---|---|---|
| Transformations | Oui | Oui | |
| Formes | Oui | Oui | |
| Remplissages solides | Oui | Oui | |
| Remplissages en dégradé | Oui | Oui | |
| Traits personnalisables | Oui | Oui | Largeur personnalisable, têtes de ligne, jonctions de ligne et tirets |
| Traits dégradés | Non | Non | |
| Calques d'image | Oui | Oui | Données intégrées uniquement |
| Couches de précomposition | Oui | Oui | |
| Découpage du chemin | Oui | Oui | |
| Mattes | Oui | Oui | |
| Masques | Non | Non | |
| Répétiteurs | Oui | Non | |
| Effets de calque | Effet de remplissage uniquement | Non | |
| Couches de texte | Non | Non | |
| Multimédia | Non | Non | Les couches audio et caméra ne sont pas prises en charge. |
| Expressions | Non | Non | |
| Couches 3D | Non | Non | |
| Remise à zéro du temps | Non | Non |
En principe, presque toutes les propriétés du format Lottie peuvent être animées. Pour une prise en charge étendue des propriétés animables, utilisez LottieAnimation. Le type VectorImage (et lottietoqml) prend en charge un sous-ensemble sélectionné de propriétés couramment utilisées pour créer des animations.
| Fonctionnalité de haut niveau | LottieAnimation | VectorImage | Commentaire |
|---|---|---|---|
| Animations de transformation | Oui | Oui | |
| Animations d'ajustement de trajectoire | Oui | Oui | |
| Animations couleur | Oui | Oui | |
| Animations d'opacité | Oui | Oui | |
| Animations de chemin | Oui | Oui | Animations de morphing des points de contrôle des formes. |
| Mouvement le long des chemins | Oui | Oui | Animation de la position et de l'orientation d'un élément le long d'un chemin |
| Autres animations de propriétés | Oui | Non |
Format de fichier : Fichiers de police en tant que format d'image vectorielle
Outre les formats conventionnels pour les images vectorielles, tels que SVG, il est également possible d'utiliser des fichiers de police personnalisés dans lesquels les images vectorielles sont stockées sous forme de glyphes.
Cela présente l'avantage de pouvoir intégrer des illustrations simples dans des étiquettes de texte, avec des propriétés typographiques similaires à celles du texte. L'alignement des images sur le texte s'en trouve facilité.
L'utilisation de fichiers de polices à cette fin peut également être un moyen pratique de distribuer de grandes bibliothèques d'icônes, ainsi que de fournir des thèmes qui peuvent être remplacés au moment de l'exécution.
Cependant, l'utilisation des polices dans Qt XML est optimisée pour produire du texte, il y a donc quelques considérations à prendre en compte lorsque l'on utilise des polices d'icônes comme alternative à des composants d'images vectorielles spécialisés tels que VectorImage.
Tout d'abord, les polices de couleur seront toujours pré-rastérisées à la taille de pixel spécifiée. Cela signifie que l'application de transformations à ces éléments de texte provoquera des artefacts de mise à l'échelle. Pour les illustrations nécessitant un zoom, par exemple, il est préférable d'utiliser VectorImage.
L'utilisation des composants spécialisés est également préférable pour toute image vectorielle animée. Bien que l'extension du format de police variable rende possible les animations de morphing, ce n'est pas l'utilisation pour laquelle le système de police de Qt est optimisé. Par conséquent, l'animation des axes variables d'une police sera moins efficace que l'utilisation d'un autre format d'image vectorielle.
Ainsi, pour les images vectorielles animées et/ou multicolores, l'utilisation d'un format tel que SVG est généralement préférable. Pour les images statiques à couleur unique, l'utilisation d'une police de caractères est une option qui présente certains avantages.
Remarque : voir également la prise en charge des icônes standard dans Qt Quick Controls.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.