Laden...

GUI automatisch auf unterschiedliche Auflösungen skalieren

Erstellt von Steel_Eagle vor 13 Jahren Letzter Beitrag vor 13 Jahren 17.848 Views
Thema geschlossen
S
Steel_Eagle Themenstarter:in
20 Beiträge seit 2010
vor 13 Jahren
GUI automatisch auf unterschiedliche Auflösungen skalieren

Morgen,
ich weiss nicht ob die Frage zu allgemein gestellt ist oder nicht, deswegen frag ich einfach mal 😉

Und zwar hab ich hier ein mit c# erstelltes GUI und würde innerhalb der Anwendung gerne die Auflösung des Bildschirmes erkennen und das Fenster mit allen Inhalten auf diese auflösung skalieren (unterschiedliche Verwendung, mehrere Pcs und noch Beamer)

gibt es da eine Möglichkeit?

Mit freundlichen Grüßen,
Steel_Eagle

1.820 Beiträge seit 2005
vor 13 Jahren

Hallo.

Es gibt eine statische Klasse Screen (System.Windows.Forms), die dürfte die für dich relevanten Informationen anbieten.

Nobody is perfect. I'm sad, i'm not nobody 🙁

F
174 Beiträge seit 2007
vor 13 Jahren

Hallo Steel_Eagle,

auf die Schnelle habe ich folgendes dazu gefunden:

Automatische Skalierung in Windows Forms
ContainerControl.AutoScaleMode

Vielleicht hilft dir das ja.

S
Steel_Eagle Themenstarter:in
20 Beiträge seit 2010
vor 13 Jahren

Danke für die Tipps , ich werd mich mal durchwühlen und wenn ich Fragen habe, mich wieder hier melden

Gruß,
Steel_Eagle

3.825 Beiträge seit 2006
vor 13 Jahren

Hallo Eagle,

Und zwar hab ich hier ein mit c# erstelltes GUI und würde innerhalb der Anwendung gerne die Auflösung des Bildschirmes erkennen und das Fenster mit allen Inhalten auf diese auflösung skalieren

Beachte, dass die Anwendung auch als Fenster laufen kann.

Bei der Abfrage der Bildschirmgröße achte darauf dass es mehrere Bildschirme geben kann.

WPF lässt sich mit dem Befehl ZOOM skalieren, bei WinForms gibt es sowas leider nicht.

Ich mache das so : Beim Start des Programmes ermittel ich die Fontgröße (100 - 200% in Windows 7, 96 dpi und mehr in Windows XP). Dann skaliere ich jedes Control manuell (Location, Size, Font.Size).

Wenn der Anwender auf Vollbild umschaltet oder im Vollbild startet dass vergrößere ich solange bis es in den Bildschirm genau reinpasst. Bei der jeweils größeren Achse setze ich die Controls mittig.

Die Automatismen in WinForms haben bei mir alle nicht funktioniert.

Anbei ein Bild in Originalgröße (800600) und als Vollbild (16801050).

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Steel_Eagle,

ich weiss nicht ob die Frage zu allgemein gestellt ist

in dieser Allgemeinheit macht es eigentlich keinen Sinn, denn das Thema wurde schon öfter besprochen. Bitte benutze die Forumssuche und poste die besten Treffer hier. Vielen Dank!

herbivore

S
Steel_Eagle Themenstarter:in
20 Beiträge seit 2010
vor 13 Jahren

hi,
erstmal Danke an Bernd für eine ausführliche Erklärung und Herangehensweise (sogar mit Screenshots!)

@herbivore:

Das Problem ist, dass die Threads das Problem nicht genau die Situation darstellen, die sich mir stellt und eben doch wieder

was ein verquerer Satz aber so ist das eben. 8o

Ich werd wohl wie Bernd geschrieben hat die einzelnen Forms alle prozentual verkleinern oder vergrößern müssen und einige Docks und Anchor hinzufügen bzw verändern müssen.

Danke für eure Hilfe
Gruß,
Steel_Eagle

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Steel_Eagle,

Das Problem ist, dass die Threads das Problem nicht genau die Situation darstellen, die sich mir stellt

man abgesehen davon, dass ich mir nicht vorstellen kann, dass deine Situation so spezifisch ist, dass keiner der bestehenden Threads darauf passt, hast du eine besondere Situation gar nicht beschrieben. Insofern also ja: Du hast zu allgemein gefragt.

herbivore

B
48 Beiträge seit 2010
vor 13 Jahren

Du kannst auch mit AutoScaleMode=Font arbeiten.

Bei Programmstart wird für eine ansonsten leere und nicht sichtbare Form schrittweise die Schriftgröße erhöht. Irgendwann wird die Form zu groß für den Monitor, der Schritt davor stellt dann die maximale Schriftgröße für die entsprechende Schriftart dar.
Damit das funktioniert muss diese TestForm im Designer die größe der größten Form des restlichen Programms haben. Wäre sie kleiner, würde unter Umständen eben diese größte Form nicht mehr auf den Bildschirm passen.

Das wars. Da alle Forms automatisch mit der Font skalieren muss man nichts weiter tun.

Wenn ein Benutzer das Verhalten nicht will, lässt man ihn einfach die Schriftgröße von Hand wählen (mit Tests natürlich). Damit verhindert man, dass die Controls auf einem extrem großen Monitor zu wuchtig werden.

S
Steel_Eagle Themenstarter:in
20 Beiträge seit 2010
vor 13 Jahren

habe ich das richtig verstanden? Ich erstelle mir also eine Unsichtbare Form , die ichim Code bei Applicationsstart schritt für schritt vergrößere, bis die Form selbst nicht mehr auf den Birldschirm passt (und wie messe ich das?)

um dann den vorherigen Wert der Schriftgröße her zu nehmen und diese dann für die Apllication fest zu setzen?

Mit freundlichen Grüßen,
Steel_Eagle

B
48 Beiträge seit 2010
vor 13 Jahren

Genau.

Wobei "unsichtbare Form" heißt, dass ich Show für diese Testform einfach nicht aufrufe. Die ganze Skalierungslogik über die Font funktioniert trotzdem.

"is die Form selbst nicht mehr auf den Birldschirm passt (und wie messe ich das?)"

Du überprüfst in der Schleife einfach, wann testform.Width oder testform.Height zu groß werden. Was heißt zu groß? Kommt drauf an: Bei mir sind alle Forms der Anwendung nochmal in eine andere, maximierte Form (ohne Controls, nur mit "schickem" Hintergrund) eingebettet, damit nichts vom Desktop zu sehen ist. In dem Fall bestimmt ClientRectangle.Size dieser Hintergrundform die Maximalgröße.

Wenn es sich um ein nicht eingebettetes (TopLevel) Fenster handelt das hochskaliert werden soll, beziehst Du die entsprechenden Werte aus der System.Windows.Forms.Screen-Klasse. Zum Beispiel System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size scheint mir sinnvoll zu sein.

Im Testlauf ist die Location egal, es kommt nur auf Width und Height an.

463 Beiträge seit 2009
vor 13 Jahren

Mann war das damals vor 14 Jahren mit einem Amiga und MUI einfach...
Nicht zu glauben, dass dies mit Windows soooo viel Arbeit und Ärger macht!

Hinweis von gfoidl vor 13 Jahren

Wegen [Hinweis] Wie poste ich richtig? Punkt 2.2 ==> geschlossen

Gui automatisch skalieren

Thema geschlossen