Skalierung
Auto-Adjust
Diese Funktionalität wurde von dem Mobile UI auf die anderen UIs ausgeweitet. Ihr Ziel ist es, alle Bedienelemente innerhalb des sichtbaren Bereichs anzuzeigen.
Beim Öffnen eines Panels wird geprüft, ob das Panel vollständig im verfügbaren Bereich dargestellt werden kann. Hierbei wird der Skalierungsfaktor berechnet:
- Der Start Zoomfaktor im Panel.
- Der [ui] initialZoomFactor aus der Config-Datei wird hinzumultipliziert.
- Optional kann mit [ui] scalePanelsPerPhysicalDPI in der Config-Datei eine physische DPI Skalierung dazu multipliziert werden (Physikalische DPI des Bildschirms durch die im Panel gespeicherten Physikalischen DPI).
Bitte beachten Sie die Unterschiede zwischen den Modulen:
- Wird ein Panel in einem Toplevel Modul geöffnet, ist das Resultat daraus der gesamte Skalierungsfaktor.
- Wird das Panel in einem Eingebetteten Modul geöffnet, wird hier noch der Zoomfaktor des Hauptpanels hinzugefügt.
Die resultierende Panelgröße ist dann die gespeicherte Panelgröße mal dem errechneten Gesamtfaktor. Zusätzlich wird die maximale Größe des verfügbaren Bereichs ermittelt (z.B.: Größe des Bildschirms minus Taskbar, Fensterrahmen, Iconbar/Menubar).
Auto Downscale Funktion:
Wenn ein Panel nicht als Vollbildschirm dargestellt wird, kommt die Auto Downscale Funktionalität zur Anwendung.
Wenn die Größe des Panels kleiner als der sichtbare Bereich multipliziert mit dem [ui] autoDownscaleThreshold Faktor ist (mit Default 2, also nicht doppelt so groß wie der sichtbare Bereich) wird das Panel (mit der längeren Seite) in den sichtbaren Bereich eingepasst (verkleinert).
Diese Funktionalität kann zur Gänze deaktiviert werden, wenn [ui] autoDownscaleThreshold auf 1 gesetzt wird.
Auto Upscale Funktion:
In einem eingebetteten Modul, oder wenn das Modul-Fenster maximiert oder im Vollbildschirm ist, kann das Panel auch vergrößert werden, wenn der verfügbare Platz größer ist als das Panel selbst. Dies gilt nicht wenn das Panel ein Layout hat. Es wird auch nur angewendet, wenn das Modul im Modus SCALE_ZOOM (setScaleStyle()) ist. Dies ist bei eingebetteten Modulen die Standardeinstellung, muss aber für VISION Module gesetzt werden. Wird ein neues Rootpanel in ein maximiertes oder im Vollbilschirm angezeigtes Modul geladen, behält das Modul seinen Status und das neue Panel innerhalb des Moduls wird angepasst.
DPI Scaling
Ziel ist es, das Panel auf allen Geräten physikalisch exakt so groß (z.B. in cm) darzustellen, wie auf dem ursprünglichen Bildschirm, auf dem es zum ersten Mal gezeichnet wurde. Das kann einen Zoomfaktor bewirken der größer aber auch kleiner als 1 sein kann.
Physikalische DPI werden nur bei der Ersterstellung im Panel gespeichert. Wenn diese Speicherung noch nicht erfolgt ist (z.B.: bei älteren Panels) wird 96 DPI angenommen.
Wenn der Unterschied zwischen Ersterstellung und derzeitigem Anzeigebereich größer als das [ui] scalePanelsDPIDeadband ist, wird DPI Scaling angewendet.
Manifest-Datei für eine größere Darstellung von UIs
Auf Windows kann eine Manifest-Datei definiert werden. Damit kann das WinCC OA-UI auf z.B. 4K-Bildschirmen größer dargestellt werden. Dies ist eine mögliche Alternative zu DPI-Scaling unter Windows.
Überpüfen Sie zuerst, dass die Manifest-Datei in der Registry aktiviert ist (=Vorbedingung):
- Öffnen Sie regedit und navigieren Sie zu dem Registrierungsschlüssel: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide
- Klicken Sie mit der rechten Maustaste und selektieren Sie NEW -> DWORD (32 bit) Value.
- Geben Sie PreferExternalManifest ein und drücken Sie dann die EINGABE-Taste.
- Klicken Sie mit der rechten Maustaste auf PreferExternalManifest und klicken Sie dann auf Ändern.
- Geben Sie Value Data 1 ein und selektieren Sie Decimal.
- Klicken Sie auf OK und beenden Sie den Registrierungseditor.
Eine Übersicht finden Sie auf der Microsoft-Seite: https://docs.microsoft.com/en-us/windows/win32/sbscs/application-manifests
Speichern Sie die WCCOAui.exe.manifest-Datei im bin-Ordner der Version mit folgendem Inhalt:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0" processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*">
</assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.VC90.CRT"
version="9.0.21022.8"
processorArchitecture="amd64"
publicKeyToken="1fc8b3b9a1e18e3b">
</assemblyIdentity>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<ms_windowsSettings:dpiAware xmlns:ms_windowsSettings="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</ms_windowsSettings:dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
Skalierung des GEDIs auf hochauflösenden Displays
Die Benutzeroberfläche wird auf hochauflösenden Displays ab einer Skalierung von 150% wie folgt skaliert:
- Unter Windows: abhängig von den Anzeigeeinstellungen des Windows-Betriebssystems (Skalierung und Layout)
- Unter Linux: abhängig von der Zoom-Einstellung des Linux-Betriebssystems (100%, 200%, ...).
Wenn der Config-Eintrag [ui] scalePanelsPerPhysicalDPI, auf 1 gesetzt wird, werden die Panels abhängig des DPI-Wertes skaliert (nicht von den Windows-Einstellungen).
Sie können das vorherige Verhalten mit Setzen der Umgebungsvariable QT_AUTO_SCREEN_SCALE_FACTOR=0
wiederherstellen.