Verwenden von Bitmaps mit Mehrfachauflösung

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu FireMonkey-Anwendungsdesign

Da FireMonkey ein plattformübergreifendes Framework (Windows, iOS, macOS und Android) ist, können FireMonkey-Anwendungen auf Geräten mit unterschiedlicher Punktdichte und Auflösung des Bildschirms ausgeführt werden. Bei Verwendung der Bitmaps mit Mehrfachauflösung von FireMonkey werden Ihre Bilder und Symbole in FireMonkey-Anwendungen korrekt in verschiedenen Punktdichten und Auflösungen (Windows, iOS, macOS und Android) dargestellt. Ein Bitmap mit Mehrfachauflösung ist eine Sammlung von Bitmap-Elementen, die dasselbe Bild in unterschiedlichen Skalierungen enthält.

In diesem Thema werden die folgenden Begriffe verwendet:

  • Punktdichte des Bildschirms: Die Menge der Pixel in einem physischen Bereich des Bildschirms; normalerweise als dpi (dots per inch, Punkte pro Zoll) bezeichnet. Beispielsweise hat ein Bildschirm mit "niedriger" Punktdichte im Vergleich zu Bildschirmen mit "normaler" oder "hoher" Punktdichte weniger Pixel in einem bestimmten physischen Bereich.
  • Bildschirmauflösung: Die Gesamtanzahl der physischen Pixel auf einem Bildschirm. Punktdichte des Bildschirms und Bildschirmauflösung werden in der physikalischen Einheit Pixel gemessen.
  • Skalierung: FireMonkey verwendet logische Koordinaten und logische Größen. Bei Bitmaps mit Mehrfachauflösung schätzt FireMonkey mithilfe der Eigenschaft Scale (Skalierung) die Beziehung zwischen logischen Einheiten und physikalischen Einheiten ein.

Folgendes Beispiel verdeutlicht die Beziehung zwischen logischen Einheiten und physikalischen Einheiten anhand der Eigenschaft Scale. Das Retina-Display (2880 × 1800 Pixel) von Apple verwendet eine doppelt so hohe Punktdichte und Auflösung wie Nicht-Retina-Displays. Daher muss für die Übermittlung Ihrer Anwendung an den Mac App Store die Symbolgruppendatei ein Symbol mit einer Auflösung von 512 x 512 Pixel für Nicht-Retina-Displays enthalten. Für dieses Symbol wird z. B. Scale = 1 festgelegt. Für Retina-Displays müssen Sie ein Symbol mit einer Auflösung von 1024 × 1024 Pixel hinzufügen. Wenn diese beiden Symbole in FireMonkey dieselbe logische Größe haben, dann verwendet FireMonkey für das 1024 × 1024 große Symbol Scale = 2. Mit verschiedenen Skalierungen wird also eine unterschiedliche Anzahl physischer Pixel für Bilder mit derselben logischen Größe in FireMonkey-Tools bereitgestellt.

Für macOS- und iOS-Plattformen sollten Sie mindestens zwei Skalierungen vorsehen: 1 und 2. Da eine Bildschirmauflösung die Hardware-Eigenschaft von bestimmten Bildschirmen ist, können für Plattformen mit vielen verschiedenen Gerätetypen und Auflösungen deutlich mehr Skalierungen erforderlich sind. Für die Android-Plattform können z. B. die Skalierungen 1, 1,33, 1,5, 2 und weitere erforderlich sein.

TCustomMultiResBitmap ist die Basisklasse für Bitmaps mit Mehrfachauflösung. TCustomBitmapItem ist die Basisklasse für Bitmap-Elemente in TCustomMultiResBitmap-Sammlungen.

Bitmaps mit Mehrfachauflösung werden in den folgenden Komponenten verwendet:

  1. In TImage-Steuerelementen. Die Eigenschaft MultiResBitmap von TImage-Steuerelementen kann ein TFixedMultiResBitmap-Bitmap mit Mehrfachauflösung aufnehmen. TFixedMultiResBitmap ist der Nachkomme von TCustomMultiResBitmap. Ein TFixedMultiResBitmap-Bitmap mit Mehrfachauflösung kann eine beliebige Anzahl von Bitmap-Elementen in unterschiedlichen Skalierungen enthalten. Auf dem jeweiligen Gerät ruft TImage das geeignetste Bitmap für die Anzeige aus der Bitmap-Sammlung in dem TFixedMultiResBitmap-Bitmap mit Mehrfachauflösung ab und verweist über die Eigenschaft Bitmap auf das ermittelte Bitmap. Welches Bitmap abgerufen wird, hängt von der Geräteauflösung und den Skalierungen der Bitmap-Elemente im TFixedMultiResBitmap-Bitmap mit Mehrfachauflösung ab. Wenn ein Bitmap mit Mehrfachauflösung kein Bitmap-Element mit der exakt erforderlichen Skalierung für einen bestimmten Bildschirm enthält, dann vergrößert oder verkleinert FireMonkey automatisch das Bitmap-Element mit der geeignetsten Skalierung. Informationen darüber, wie das Bitmap abgerufen wird, finden Sie unter Bitmap. Bedenken Sie dabei, dass jedes Bitmap-Element Ressourcen der ausführbaren Anwendungsdatei auf allen Plattformen beansprucht (auch wenn ein Bitmap-Element nie auf einer bestimmten Plattform verwendet wird).
  2. In TImageList-Bilderlisten. Bilderlisten bieten Tools mit vielfältigen Funktionen für die Verwendung von zentralisierten Sammlungen kleiner Bilder durch GUI-Elemente (Steuerelemente, Menüs und andere) in Ihren FireMonkey-Anwendungen. Bilderlisten stellen mit Bitmaps mit Mehrfachauflösung Quellbilder dar, aus denen Bilderlisten endgültige Bilder, die angezeigt werden können, generieren. Die generierten endgültigen Bilder werden auch als Bitmaps mit Mehrfachauflösung dargestellt. Siehe Verwenden von TImageList-Bilderlisten als zentralisierte Bildersammlungen.
  3. Im Interface IGlyph. IGlyph deklariert die grundlegenden Methoden und Eigenschaften zum Verwalten von Bilderlisten. Viele Komponenten, wie TCustomButton, TCustomListBox, TTabControl, TTreeViewItem, TMenuBar und andere, unterstützen das Interface IGlyph und können deshalb Bitmaps mit Mehrfachauflösung verwenden.
  4. In TGlyph-Steuerelementen. TGlyph-Steuerelemente unterstützen das Interface IGlyph und implementieren daher Methoden und Eigenschaften zum Verwalten von Bilderlisten. TGlyph deklariert die Eigenschaften Images, ImageIndex und AutoHide als published, damit sie im Objektinspektor bearbeitet werden können. Images verweist auf eine TCustomImageList-Bilderliste und ImageIndex bezeichnet das entsprechende Bild in dieser Liste. Das Bild wird so skaliert, dass es vollständig in den Steuerelementbereich passt. Das Element TGlyph ist in den meisten mit Stilen versehenen Steuerelementen enthalten (TButton, TTabControl, TMenuItem und andere).

Mit dem MultiResBitmap-Editor erstellen Sie TFixedMultiResBitmap-Bitmaps mit Mehrfachauflösung.

Bitmap-Elemente in TFixedMultiResBitmap-Bitmaps mit Mehrfachauflösung haben den Typ TFixedBitmapItem. TFixedBitmapItem-Bitmap-Elemente verfügen über die Eigenschaft Fixed. Bitmap-Elemente mit Fixed = True sind obligatorisch. Per Vorgabe enthält jedes Bitmap mit Mehrfachauflösung mindestens ein obligatorisches (Standard-)Bitmap mit Scale = 1 und dem Namen Normal. Im MultiResBitmap-Editor können Sie obligatorische Bitmap-Elemente weder löschen noch deren Eigenschaft Scale ändern. Sie können die Liste der obligatorischen Bitmap-Elemente (und Skalierungen) mit der globalen Methode RegisterScaleName erweitern.

Siehe auch