Utilisation de bitmaps multi-résolutions

De RAD Studio
Aller à : navigation, rechercher

Remonter à Conception d'applications FireMonkey

FireMonkey est un framework multiplate-forme (Windows, iOS, OS X et Android). Les applications FireMonkey fonctionnent donc sur des périphériques dotés d'écrans de différentes densités et résolutions. L'utilisation des bitmaps multi-résolutions de FireMonkey permet un affichage correct des images et des icônes de vos applications FireMonkey dans différentes densités et résolutions (Windows, iOS, OS X et Android). Un bitmap multi-résolution est une collection d'éléments bitmap fournissant la même image, mais utilisant des échelles différentes.

Nous utilisons les termes suivants :

  • Densité de l'écran : la quantité de pixels au sein d'une zone physique de l'écran ; généralement désignée par l'abréviation dpi (dots per inch, points par pouce). Par exemple, un écran de "faible" densité contient moins de pixels au sein d'une zone physique définie qu'un écran de densité "normale" ou "élevée".
  • Résolution de l'écran : le nombre total de pixels physiques sur un écran. La densité de l'écran et la résolution de l'écran sont mesurées en unités physiques - les pixels.
  • Echelle : FireMonkey utilise toujours des coordonnées logiques et des tailles logiques. En utilisant des bitmaps multi-résolutions, FireMonkey estime les relations entre les unités logiques et les unités physiques par le biais de la propriété Scale (échelle).

Voyons de quelle manière fonctionne la propriété Scale. Par exemple, Apple utilise l'écran Retina (2880×1800 pixels), qui multiplie par deux la densité et la résolution par rapport aux autres écrans. En conséquence, pour soumettre votre application à l'App Store Mac, le fichier jeu d'icônes doit inclure une icône avec une résolution de 512x512 pixels, pour les écrans non Retina. Supposons que nous utilisions la propriété Scale = 1 pour cette icône. Pour les écrans Retina, vous devez ajouter une icône avec une résolution de 1024×1024 pixels. Si ces deux icônes ont la même taille logique dans FireMonkey, alors pour l'icône 1024×1024, FireMonkey doit utiliser la propriété Scale = 2. Nous utilisons donc différentes échelles en fonction du nombre de pixels physiques devant être obtenu dans les images qui ont la même taille logique dans les outils FireMonkey.

Pour les plates-formes OS X et iOS, il est préférable de fournir aux moins deux échelles : 1 et 2. Etant donné que la résolution de l'écran est une propriété matérielle particulière à chaque écran, les plates-formes associées à différents types de périphériques ayant différentes résolutions peuvent nécessiter un ensemble plus étendu d'échelles. Par exemple, la plate-forme Android peut nécessiter les échelles 1, 1.33, 1.5, 2, ainsi que d'autres échelles.

La classe de base pour les bitmaps multi-résolutions est TCustomMultiResBitmap. TCustomBitmapItem est la classe de base des éléments bitmap dans les collections TCustomMultiResBitmap.

Les bitmaps multi-résolutions sont utilisés dans les composants suivants :

  1. Dans les contrôles TImage. Les contrôles TImage conservent un bitmap multi-résolution TFixedMultiResBitmap dans la propriété MultiResBitmap. TFixedMultiResBitmap est le descendant de TCustomMultiResBitmap. Un bitmap multi-résolution TFixedMultiResBitmap peut contenir n'importe quelle quantité d'éléments bitmap ayant différentes échelles. Sur chaque périphérique, TImage récupère le bitmap le plus approprié à afficher à partir de la collection de bitmaps dans le bitmap multi-résolution TFixedMultiResBitmap et fait référence au bitmap obtenu avec la propriété Bitmap. Le bitmap obtenu dépend de la résolution du périphérique et des échelles des éléments bitmap conservés dans le bitmap multi-résolution TFixedMultiResBitmap. Si un bitmap multi-résolution ne contient pas un élément bitmap ayant exactement l'échelle requise pour un écran donné, FireMonkey effectue automatiquement un étirement ou un zoom de l'élément bitmap ayant l'échelle la plus appropriée. Pour plus d'informations sur la manière d'obtenir ce bitmap, voir Bitmap. Toutefois, gardez à l'esprit que chaque élément bitmap utilise les ressources de l'exécutable de l'application sur toutes les plates-formes (même si un élément bitmap donné n'est jamais utilisé sur une plate-forme particulière).
  2. Dans les listes d'images TImageList. Les listes d'images procurent des outils complets pour l'utilisation des collections centralisées de petites images adaptées aux éléments de l'interface utilisateur (contrôles, menus, etc.) dans vos applications FireMonkey. Les listes d'images utilisent des bitmaps multi-résolutions pour représenter des images source à partir desquelles les listes d'images génèrent des images finales pouvant être affichées. Les images finales générées sont également représentées sous la forme de bitmaps multi-résolutions. Voir Utilisation des listes d'images de TImageList en tant que collections centralisées d'images.
  3. Dans l'interface IGlyph. IGlyph déclare les méthodes et propriétés de base utilisées pour gérer les listes d'images. De nombreux composants, comme TCustomButton, TCustomListBox, TTabControl, TTreeViewItem, TMenuBar, etc., prennent en charge l'interface IGlyph et peuvent donc utiliser des bitmaps multi-résolutions.
  4. Dans les contrôles TGlyph. Les contrôles TGlyph prennent en charge l'interface IGlyph et implémentent donc les méthodes et propriétés utilisées pour gérer les listes d'images. TGlyph déclare comme publiées les propriétés Images, ImageIndex et AutoHide pour pouvoir les modifier dans l'inspecteur d'objets. Images référence une liste d'images TCustomImageList, et ImageIndex identifie l'image particulière dans cette liste. L'image est mise à l'échelle pour s'insérer entièrement dans la zone du contrôle. L'élément TGlyph est inclus dans les contrôles les plus stylés (TButton, TTabControl, TMenuItem, etc.).

Utilisez l'éditeur MultiResBitmap pour créer les bitmaps multi-résolutions TFixedMultiResBitmap.

Les éléments bitmap dans les bitmaps multi-résolutions TFixedMultiResBitmap ont le type TFixedBitmapItem. Les éléments bitmap TFixedBitmapItem ont la propriété Fixed. Les éléments bitmap ayant Fixed = True sont obligatoires. Par défaut, chaque bitmap multi-résolution contient au moins un élément bitmap obligatoire (par défaut) ayant Scale = 1 et nommé Normal. Dans l'éditeur MultiResBitmap, vous ne pouvez pas supprimer des éléments bitmap obligatoires ou modifier le paramètre Scale des éléments bitmap obligatoires. Vous pouvez étendre la liste des éléments bitmap obligatoires (et des échelles) en utilisant la méthode globale RegisterScaleName.

Voir aussi