Laden...

Wieso hat FormWindowState.Maximized mehr Pixel als mein Monitor?

Erstellt von fantinger vor 4 Jahren Letzter Beitrag vor 4 Jahren 2.175 Views
F
fantinger Themenstarter:in
23 Beiträge seit 2007
vor 4 Jahren
Wieso hat FormWindowState.Maximized mehr Pixel als mein Monitor?

Hallo,

mein Monitor hat eine Auflösung von 2560x1440 Pixeln.
Wenn ich nun eine Form erstelle und FomWindowState auf Maximized setze, so ist die Size des Forms mit 2578x1458 Pixeln jeweils in Breite und Höhe 18 Pixel größer als die Monitorauflösung. Wieso ist das so und gibt es für die Größenabweichung eine Regel?
Wenn ich nun zusätzlich FormBorderStyle auf None setze, so wächst das ClientRectangle auf die Breite und Höhe der Size des Forms und es werden am Rand einige Pixel abgeschnitten. Seltsamerweise ist auch das DisplayRectangle nun so groß, wie die Size der Form (2578x1458) - ich dachte immer, dass das DisplayRectangle nur den sichtbaren Clientbereich darstellt - also maximal 2560x1440 Pixel.

Gibt es eine brauchbare Möglichkeit dieses Verhalten (abgeschnittene Randpixel) zu unterbinden?

viele Grüße

Christian

1.040 Beiträge seit 2007
vor 4 Jahren

Moin,

also woher die zusätzlichen Pixel kommen kann ich dir nicht sagen. Bei einer Auflösung von 1920x1080 ist die Size 1936x1096.

Was ich sagen kann:
Das Verhalten bei FormBorderStyle.None kann ich nicht nachvollziehen, es werden keine Pixel abgeschnitten und die Size, ClientRectangle und DisplayRectangle beträgt 1920x1080.

Das ClientRectangle und das DisplayRectangle unterscheiden sich, wenn du ein scrollbares Control hast. Siehe hier: Control.ClientRectangle vs Control.DisplayRectangle

F
fantinger Themenstarter:in
23 Beiträge seit 2007
vor 4 Jahren

Hallo,

das ist eine schon etwas ältere MDI-Anwendung.
Wenn ich bei FormBorderStyle.None und FomWindowState.Maximized die Size nun explizit auf die Grafikauflösung setzte geht das. Für meinen Zweck sollte das erst einmal ausreichen - wenngleich solche Merkwürdigkeiten dann doch irgendwann einmal regelmäßig Ärger machen.

viele Grüße

Christian

1.040 Beiträge seit 2007
vor 4 Jahren

Wie gesagt, dieses Verhalten kann ich prinzipiell nicht nachvollziehen.

Ein Fenster mit FormBorderStyle.None und FomWindowState.Maximized hat bei mir die erwartete Größe.
Ein Fenster mit FormBorderStyle.Sizable und FomWindowState.Maximized ist in der Size zu groß, wenn es dann allerdings nicht mehr maximiert ist und man es auf die Size von 1920x1080 setzt, dann nimmt es auch tatsächlich nicht den ganzen Bildschirm ein...

S
248 Beiträge seit 2008
vor 4 Jahren

Hallo,

ich habe die Vermutung, dass der Schatten des Fensters bei der Berechnung der Größe mitgezählt wird, da dieser bei FormBorderStyles.None nicht gerendert wird und hier das Fenster die erwartete Größe hat.

Grüße