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 = 282

    Es sollte aber rauskommen (ungefähr mit einem Lineal nachgemessen):
    Horsize = 330 mm
    VerSize = 205 mm

    Ich 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 are

    Horizontal 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,


Anmelden zum Antworten