RapaGUI bietet volle Unterstützung für High-DPI-Displays. Normalerweise erledigt RapaGUI alles automatisch für Sie, so dass Ihr Programm unabhängig von der DPI-Einstellung des Monitors gleich aussehen sollte. Dies wird erreicht, indem alle Positions- und Größenwerte in geräteunabhängige Pixel berechnet werden, wodurch RapaGUI-Programme gut auf verschiedene Monitor-DPI-Einstellungen skaliert werden können. Darüber hinaus skaliert RapaGUI automatisch alle Rastergrafiken, z.B. Schaltflächenbilder, die mit Button.Icon eingestellt wurden, um sie an die DPI-Einstellung des Monitors anzupassen.
Beachten Sie, dass die automatische Skalierung von Rastergrafiken durch RapaGUI dazu führen kann, dass Bilder auf Monitoren mit hohen DPI-Werten unscharf werden. Sie können dies ändern, indem Sie entweder mehrere Bilder für verschiedene DPI-Einstellungen bereitstellen, anstatt nur ein einziges Bild zu verwenden, oder indem Sie Vektorgrafiken verwenden, die ohne Qualitätsverluste auf jede Größe skaliert werden können.
Angenommen, Sie möchten Ihrer Schaltfläche ein 32x32px-Icon hinzufügen, indem Sie das Attribut Button.Icon verwenden. Wenn Sie Button.Icon auf einen Rasterpinsel setzen und der Monitor des Benutzers eine DPI-Skalierung von 200% aktiviert hat, skaliert RapaGUI das Bild auf 64x64px, was unscharf aussieht. Sie können also entweder Button.Icon auf den Identifikator eines Vektorpinsels setzen oder ein Hollywood-Icon erstellen, 32x32px und 64x64px (und möglicherweise mehr) Bilder hinzufügen und dann dieses Icon an Button.Icon übergeben.
Beachten Sie, dass Sie in diesem Fall auch das Attribut Button.IconType
auf Icon setzen müssen, um RapaGUI mitzuteilen, dass Sie den
Identifikator eines Icons anstelle eines Pinsels übergeben haben,
was der Standardtyp für Button.Icon ist. In diesem
Fall verwendet RapaGUI das 32x32px-Bild im Icon, falls auf dem
Monitor keine DPI-Skalierung aktiviert ist oder das 64x64px-Bild,
wenn der Monitor eine DPI-Skalierung von 200% aktiviert hat.
Wenn die DPI-Skalierung zwischen 100% und 200% liegt, skaliert
RapaGUI das Bild innerhalb des Icons, dessen Größe der gewünschten
Zielgröße am nächsten kommt.
Standardmäßig erwarten alle Widgets, die Bilder unterstützen,
dass Sie Hollywood-Pinsel übergeben. Wenn Sie stattdessen immer
Hollywood-Icons übergeben möchten, können Sie auch das globale
Attribut Application.UseIcons auf True setzen. Dadurch
wird die Voreinstellung aller Tags, die Bilder von Hollywood-Pinseln
akzeptieren, in Hollywood-Icons geändert.
Wie oben beschrieben, skaliert RapaGUI bei der Übergabe von
Hollywood-Pinseln an RapaGUI, die Rasterdaten enthalten,
diese Rasterpinsel automatisch, um sie an die DPI-Einstellungen
des aktuellen Monitors anzupassen. Wenn Sie das nicht möchten,
können Sie den Tag ScaleGUI auf False setzen, wenn Sie das
RapaGUI-Plugin mit der Präprozessor-Anweisung @REQUIRE deklarieren.
Siehe Initialisierung von RapaGUI für Details. Die bilineare Interpolation
während der Skalierung kann ausgeschaltet werden, indem der
Tag InterpolateGUI bei @REQUIRE auf False gesetzt wird. Alternativ
kann die automatische Bildskalierung auch für jedes einzelne
Widget konfiguriert werden. Bei Schaltflächenbildern können
Sie beispielsweise die automatische Bildskalierung steuern,
indem Sie den Tag Button.IconScale setzen.
Außerdem werden alle Hollywood-Widgets automatisch
skaliert, um sie an die DPI-Einstellungen des aktuellen Monitors
anzupassen. Wenn Sie das nicht möchten, können Sie den Tag ScaleHollywood
auf False setzen, wenn Sie das RapaGUI-Plugin mit @REQUIRE
deklarieren. Siehe Initialisierung von RapaGUI für Details. Hier
kann die bilineare Interpolation während der Skalierung aktiviert
werden, indem der Tag InterpolateHollywood bei @REQUIRE auf
True gesetzt wird.
Mit der Scrollcanvas-Klasse sind die Abmessungen,
die Sie in Scrollcanvas.VirtWidth und Scrollcanvas.VirtHeight
angeben, standardmäßig in geräteunabhängigen Pixeln
und RapaGUI wendet automatisch den Skalierungsfaktor des Systems
auf den vom Befehl Scrollcanvas.Paint gezeichneten
Inhalt an. Wenn Sie eine fein abgestimmte Kontrolle wünschen,
können Sie das Attribut Scrollcanvas.AutoScale auf
False setzen. In diesem Fall werden Scrollcanvas.VirtWidth
und Scrollcanvas.VirtHeight als physikalische Pixel
interpretiert und es erfolgt keine automatische Skalierung,
damit Ihre Malfunktion hochauflösende Grafiken ohne Qualitätsverlust
durch Skalierung zeichnen kann.
Denken Sie schließlich daran, dass Sie den DPI-bewahr Modus
unter Windows explizit aktivieren müssen, wenn Ihre Programme
nativ High-DPI-Modi unterstützen soll. Dies kann durch Setzen
des Tags DPIAware in der Präprozessor-Anweisung @OPTIONS
auf True erfolgen, z.B:
@OPTIONS {DPIAware = True}
|
Wenn Sie dies nicht tun, ist Ihr Programm nicht DPI-fähig, was
bedeutet, dass Windows es in einem speziellen Kompatibilitätsmodus
ausführt. In diesem Kompatibilitätsmodus skaliert Windows Ihr
Programm entsprechend der DPI-Einstellung des Monitors, dies
führt jedoch zu einem unscharfen Erscheinungsbild. Aus diesem
Grund wird empfohlen, wie oben bereits aufgeführt, DPIAware
auf True zu setzen.
Beachten Sie, dass Sie unter Linux die GTK+ 3 Version von RapaGUI verwenden sollten, wenn Sie High-DPI-Modi unterstützen möchten, da GTK+ 2 High-DPI-Modi nicht sehr gut unterstützt.