Problem mit Bildschirmgröße herausfinden
-
Hi Leute,
Ich will etwas in wahrer Größe am Bildschirm anzeigen lassen. Jedoch funktioniert das nicht so wie ich mir das vorstelle.

Zuerst bestimme ich mir die Pixel und die Größe des Bildschirmes
HorRes=GetDeviceCaps(hdc, HORZRES); HorSize=GetDeviceCaps(hdc, HORZSIZE); VerRes=GetDeviceCaps(hdc, VERTRES); VerSize=GetDeviceCaps(hdc, VERTSIZE);Die Pixel stimmen jedoch stimmen HorSize und VerSize nicht mit den wahren Werten überein.
Das Programm spuckt folgende Werte aus:
HorSize = 452
VerSize = 282Es sollte aber rauskommen (ungefähr mit einem Lineal nachgemessen):
Horsize = 330 mm
VerSize = 205 mmIch hab keine Ahnung wie Windows auf die Werte kommt. Da die Verhältnisse 452/330 und 282/105 ca gleich sind, vermute ich, dass etwas mit der Umrechnung nicht stimmt. Mit LOGPIXELSX werden 96 dpi angezeigt, vielleicht hat mein Laptopbildschirm auch mehre dpi.
Weiß einer von euch wie ich den wahren Wert anzeigen kann?
Danke.
MfG Rudi
-
Hi,
hab die Lösung schon, so stimmt es ca.
The device capabilities that you obtain from GetDeviceCaps with the HORZSIZE
and VERTSIZE indices are documented (as I indicated earlier) as "Width, in
millimeters, of the physical screen" and "Height, in millimeters, of the
physical screen." These should be documented as a "logical width" and a
LOGPIXELSX, and LOGPIXELSY values. The formulas areHorizontal Size (mm) = 25.4
× Horizontal Resolution (pixels)/ Logical Pixels X (dots per
inch)
Vertical Size (mm) = 25.4
× Vertical Resolution (pixels)/ Logical Pixels Y (dots per
inch)Danke,