peetwonder - So 28.02.16 12:14
Titel: Auflösung und Mausposition wird falsch ausgelesen/Windows10?
Hallo erstmal,
ich hab da ein sehr seltsames problem...
Habe eine kleine Anwendung bei der ich die Auflösung des Bildschirmes auslese
C#-Quelltext
1:
| (SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height) |
und die Mausposition
C#-Quelltext
1:
| (Cursor.Position.X, Cursor.Position.Y) |
unter meinem Windows7 64Bit Laptop alles kein problem (Auflösung 1600x900)
oben links ist die Position 0,0
unten rechts ist die Position 1599, 899
nun habe ich mir ein Convertibel zugelegt und will dort die Anwendung zum laufen bringen.
Aber:
bei dem Miix700 Windows 10 64Bit (Auflösung 2160x1440) geht das nicht so wie es soll
oben links ist die Position 0,0
unten rechts 1439, 959
Selbiges bekomme ich beim auslesen der Auflösung raus (1440x960)
ich brauch aber die wirkliche Position, da ich mit
GetPixel die Pixelfarbe von einer Position auslesen will
und wenn ich die Farbe, der aktuellen Mausposition aus dem Bitmap auslese, ist ist die Farbe irgendwo weiter oben / links
C#-Quelltext
1: 2: 3: 4:
| memoryImage = new Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height); Graphics g = Graphics.FromImage(memoryImage); g.CopyFromScreen(0, 0, 0, 0, memoryImage.Size); g.Dispose(); |
das macht für mich den Anschein als ob
g.CopyFromScreen in der wirklichen Auflösung gemacht wird (2150x960)
ich hoffe das ich es ausreichend beschrieben habe und ihr mir helfen könnt.
Danke euch schon mal im vorraus!
mfG Peet
Moderiert von
Th69: C#-Tags hinzugefügt
peetwonder - So 28.02.16 13:32
nach nochmaliger googlesuche ist mir noch was aufgefallen :D
man kann bei den Anzeigeinstellungen die Größe von Text, Apps... ändern.
und genau das ändert die relative Auflösung.
Mit
C#-Quelltext
1: 2:
| SystemParameters.FullPrimaryScreenHeight SystemParameters.FullPrimaryScreenWidth |
bekommt man die wirkliche Auflösung wohl raus
werde das ganze jetzt testen.
Ralf Jansen - So 28.02.16 13:55
Zitat: |
bekommt man die wirkliche Auflösung wohl raus |
das ist eine Klasse aus WPF. Du bist aber gerade im Winforms Bereich und hast bisher Winforms benutzt.
Du solltest dich schon für eine Technik entscheiden und nicht wild mischen.
In Winforms wäre die Entsprechung
SystemInformation.PrimaryMonitorSize.
Das bezieht sich aber nur auf die Fälle wo man nur einen Monitor hat (Wir sind hier Softwareentwickler wer kommt da denn nur mit einem aus :roll:)
auf einem Multimonitorsystem sollte man erst denn Bildschirm ermitteln und dann dessen Werte verwenden. Z.B.
C#-Quelltext
1:
| var currentBounds = Screen.FromPoint(Cursor.Position).Bounds; |