Announcement

Collapse
No announcement yet.

Win 10 Auflösung <> VB.NET Auflösung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Win 10 Auflösung <> VB.NET Auflösung

    Hallo Forum,
    ich habe ein Problem mit der Auflösung. Und zwar soll mein kleines Programm nichts weiter machen als auf einem Informationsbildschirm ein paar Listen anzeigen, deren Daten ich aus einer DB bekomme. Der Fernseher hat die Auflösung 1920x1080, genau wie mein PC.
    -Neue Windows Forms Application
    -Size 1920; 1080
    -WindowState Maximised
    -FormBorderStyle None
    -BackgroundImage ein Bild mit 1920x1080px
    -ein paar Label eingefügt
    Wenn ich das starte, ist nur ein Teil des Hintergrundbildes zu sehen und die Label sind auch nicht an der richtigen stelle. Ich habe dann getestet und herausgefunden, dass mi :

    Private Sub btnTest_Click(sender As Object, e As EventArgs) Handles btnTest.Click
    MessageBox.Show(Screen.PrimaryScreen.Bounds.ToStri ng())
    End Sub

    1536x864 zurück gibt. Das deckt sich auch mit

    Private Sub frmMain_MouseClick(sender As Object, e As MouseEventArgs) Handles Me.MouseClick
    MessageBox.Show(MousePosition.ToString())
    End Sub

    In der rechten unteren Ecke ist 1536x864. Zwar kann ich mit BackgroundImageLayout Stretch die Größe des Hintergrundbildes auf Bildschirmgröße anpassen, nur dann sind weiterhin die Label und andere Elemente nicht da wo sie sein sollen. Kann mit dieses Verhalten jemand erklären? Übersehe ich etwas?

  • #2
    Windows kennt seit ein paar Version das Hochskalieren der Auflösung. Früher stand die Skalierung immer auf 100% aber seit Windows 10 und dem mittlerweile häufigeren Auftreten von hochauflösenden Bildschirm ermittelt Windows 10 die bei der Installation explizit und das explizit für jedes angeschlossene Display. Bei dir steht der Zoom offensichtlich auf 125% für das Anzeigegerät aber da wo du die Anwendung entwickelt hast auf 100%. Kannst du in den Windowseinstellungen anpassen/nachschauen. Irgendwo unter Systemsteuerung\Darstellung und Anpassung\Anzeige.

    Mit Pixeln arbeiten ist mittlerweile keine gute Idee und man sollte explizit alles relativ sizen. Winforms ist aufgrund seines Alters da extrem schlecht aufgestellt und du solltest mit diversen Problemen rechnen wenn der Zoom nicht auf 100% steht. Zumindest solltest du nicht damit rechnen das Winforms es von selbst einfach so richtig macht.

    In deinem Fall solltest du einfach für das Background der Form BackgroundImageLayout auf Zoom oder Stretch setzen. Je nachdem was für dich besser auskommt. Ich vermute die Label willst du relativ zum Background Image setzen und du bekommst die im Moment nach links unten verschoben weil die standarmäßig an der linken oberen Ecke ausgerichtet werden. Vermutlich hilft (ohne dein Programm gesehen zu haben) an den Label die Anchor wegzunehmen. Also vom standardmäßigen "Top, Left" auf "None".

    Comment

    Working...
    X