Autor Beitrag
peetwonder
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 28.02.16 12:14 
Hallo erstmal,

ich hab da ein sehr seltsames problem...

Habe eine kleine Anwendung bei der ich die Auflösung des Bildschirmes auslese
ausblenden C#-Quelltext
1:
(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height)					

und die Mausposition
ausblenden 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
ausblenden C#-Quelltext
1:
2:
3:
4:
memoryImage = new Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height);
Graphics g = Graphics.FromImage(memoryImage);
g.CopyFromScreen(0000, 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 user profile iconTh69: C#-Tags hinzugefügt
peetwonder Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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
ausblenden C#-Quelltext
1:
2:
SystemParameters.FullPrimaryScreenHeight
SystemParameters.FullPrimaryScreenWidth

bekommt man die wirkliche Auflösung wohl raus

werde das ganze jetzt testen.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.

ausblenden C#-Quelltext
1:
var currentBounds = Screen.FromPoint(Cursor.Position).Bounds;					
peetwonder Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 28.02.16 14:18 
ja danke,
ist mir auch eben aufgefallen....

das mit Multimonitor werde ich später angehen.
erstmal muss für mich wieder die Anwendung laufen ;)

ich werden denn Scalefactor auslesen und mir das ganze umrechnen wie ich es brauche.
So bleibt es für mich als blutigen Anfänger verständlich :)