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 im verfügbaren Bereich dargestellt werden kann. Hierbei wird der Skalierungsfaktor berechnet:

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.

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.