Form Designer & DPI Awareness = Konfusion

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Kurzer
Beiträge: 1614
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Form Designer & DPI Awareness = Konfusion

Beitrag von Kurzer »

Hallo zusammen,

ich teste gerade den PB internen Formdesigner (5.70), weil ich dachte, dass ich das bisher genutzte "PureForm" von Gnozal nicht mehr benutzen kann. Grund dafür war, dass in alten GUI Projekten die Maße der Gadgets nicht mehr passen, wenn ich sie in PureForm einlese (Texte sind jetzt z.B. länger als die Breite des Textgadgets).

Das ganze liegt sicher daran, dass diese GUIs auf meinem alten Rechner erstellt worden sind, auf dem die Desktop DPI Einstellung 100% betrug. Auf meinem aktuellen Rechner mit HD Display beträgt sie 125%.

Da PureForm nicht DPI aware ist, gehe ich davon aus, dass ich damit keine GUIs auf einem "125% Rechner" mehr designen sollte, weil ich die Dialoge dann in einem 100% Modus erstellen müsste (was mir zu klein ist auf meinem jetzigen Rechner). Würde ich sie so erstellen, dass ich sie auf dem 125% Rechner als passend empfinde, dann werden sie nach der Kompilierung mit DPI awareness, zur Laufzeit aber nochmal um 25% vergrößert - und das ist dann wieder viel zu groß.

Hier mal kurz ein paar Beispiele, um das mit PureForm zu verdeutlichen:

Hier ein Teil einer GUI ohne DPIA kompiliert und auf einem Rechner mit 100% Desktop DPI ausgeführt (da passt alles):
Bild

Hier jetzt ohne DPIA und auf einem Rechner mit 125% DPI ausgeführt:
Bild

Erwartungsgemäß passt das alles nicht mehr, soweit so gut.
(Das die GUIs dennoch gleich breit sind mag daran liegen, dass der 100% DPI Rechner in einer VM läuft, die wiederum auf meinem Rechner mit 125% DPI gehostet wird)

Hier noch obige Beispiele mit DPI awareness kompiliert.

Mit DPIA und auf einem Rechner mit 100% DPI ausgeführt:
Bild

Auch hier ist wieder erwartungsgemäß alles okay.

Nun eins mit DPIA und auf einem Rechner mit 125% DPI ausgeführt:
Bild

Passt auch fast alles, weil PB alles hochskaliert (ein "ver-" ist leider verschluckt worden).

Wenn ich dieses GUI Projekt in PureForm lade, um es zu bearbeiten, dann sehe ich aber das hier (auf dem 125% Rechner):
Bild

Die GUI wird nicht skaliert und auch der TExt nicht verkleinert. Die Gadgets sind damit zu klein für den Inhalt. Ich gehe also davon aus, dass ich in PureForm eine GUI nur auf einem nativen 100% DPI Rechner designen dürfte, damit nachher bei der Kompilierung mit aktivierter DPI awareness auch alles in der richtigen Proportion angezeigt wird. Daher habe ich mir den PB internen Designer angesehen (vorher immer einen Bogen drum gemacht, weil er mir vom handling nicht zusagt).

Jetzt mal ein Vergleich mit dem PB internen Designer. Beide Tests sind auf dem 125% DPI Rechner kompiliert worden.

Ein Fenster ohne DPI awareness kompiliert:
Bild

Und hier mit DPI awareness kompiliert:
Bild

Jetzt kommen wir zu dem Punkt der Konfusion:

Designe ich die GUI hier immer im 100% Modus? Oder doch eher im 125% Modus, weil mein Rechner, auf dem PB läuft ja auf 125% DPI eingestellt ist.

Wenn ich dann eine so erstellte GUI mit DPI awareness kompiliere, hat das Executable dann evtl. eine noch höhere DPI Auflösung (nochmal +25% von 125% der Urprungsgröße)?

Was ist auf meinem Rechner mit 125% DPI Einstellung eigentlich 100%? Kann ich auf dem Rechner überhaupt erahnen wie die GUI auf einem waschechten 100% DPI Rechner aussieht?

Hier nochmal alles im Verlgeich, aber wie gesagt läuft der 100% Rechner in einer VM, die wiederum auf dem 125% Rechner läuft.

Bild

Sollte der PB Designer nicht eine Einstellung besitzen, um schon beim designen in der 125% Größe zu arbeiten? Man könnte dann bereits beim designen feststellen, ob die GUI zu ausladend ist oder nicht.

Aber wie gesagt, wenn der Designer das nochmal um 25% skaliert, ist das dann auf einem 125% Rechner wirklich 125% oder doch schon 156,25% (125 + 25% davon).

Je länger ich darüber nachdenke, desto mehr verwirrt es mich. :shock: :freak:
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2023: 56 Jahre.
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Form Designer & DPI Awareness = Konfusion

Beitrag von Kiffi »

@Kurzer: Hast Du schon mal darüber nachgedacht, Deine UI mit der Dialog-Library zu realisieren?

Ich selber bin eigentlich ziemlich begeistert davon (auch wenn es anfänglich ein wenig umdenken erfordert), weil dann die ganze Pixelschubserei entfällt und die Elemente sich automatisch ausrichten.

Mit dem DialogDesign0R von HeX0R hast Du auch ein ziemlich geniales Tool zum Erstellen der Dialoge an der Hand.

Allerdings habe ich keine Erfahrung, wie das ganze mit unterschiedlichen DPI aussieht.

Nur so als kleine Inspiration ... Peter

//Edit:

100%:
Bild

125%:
Bild
Hygge
Benutzeravatar
Kurzer
Beiträge: 1614
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: Form Designer & DPI Awareness = Konfusion

Beitrag von Kurzer »

Hallo Peter,

danke für Deine Inspiration.
Die Dialog Lib hatte ich mir bisher noch nicht angesehen. Demzufolge auch nicht HexORs DialogDesignOR.

Das habe ich jetzt mal "auf die Schnelle" nachgeholt.
Es ist ein anderer Ansatz und man gibt doch einiges von seinem "intuitiven designen" an die Lib ab. Bei mir kommt es ab und zu vor, dass ich eine fertiggestellte GUI doch nochmal komplett umbaue, weil mir was besseres eingefallen ist. Das geht bei den WYSIWYG Designern recht fix von der Hand, weil man einfach die Gadgets mit der Maus verschiebt. Bei der Dialog Lib und selbst mit Einsatz des DialogDesignORs wird so eine Aktion vermutlich aufwändiger sein.

Angenommen ich erstelle eine GUI mit der Dialog Lib, ist dann die Interaktion mit der GUI genau so, als hätte man die GUI konventionell erstellt? In den Beispielen zur Dialog Lib sehe ich z.B. direkte Verweise auf Eventprozeduren innerhalb des XMLs.

Ich arbeite derzeit mit Projekttemplates, die auf eine GUI.pbi hin ausgelegt sind, welche von PureForm erzeugt wird. Vermutlich muss ich meine Templates dann umbauen, weil doch einiges anders läuft mit der Dialog Lib.

Ehrlich gesagt würde ich bei der konventionellen GUI Erstellungsmethode bleiben wollen, solange ich nicht die Zeit und Muße habe mich mit der Dialog Lib zu beschäftigen.

Ich übersetze meinen obigen Post mal und stelle ihn im englischen Forum ein, dann kann evtl. Fred was zu der DPI Konfusion sagen.

Gruß Markus
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2023: 56 Jahre.
Antworten