Ein Zoll oder Millimeter auf dem Monitor



  • Ich würde gerne in WYSIWG drucken, wie kann man die Anzahl der Pixel welche ein Zoll auf dem Monitor ergeben ermitteln?



  • auflösung ermitteln(eigenschaften anzeige), bildschirmdiagonale mit dialog o.ä. abfragen (evtl. auch über eigenschaften anzeige aber verdammt aufwendig), seitenverhältnis ermitteln
    entsprechende regkeys kann ich grad nicht mit dienen

    1-2-3-phytagoras = breiteinzoll

    vertikaleauflösung/breiteinzoll=pxprozoll

    irgendwas übersehen?



  • Hi Progger

    Screen->PixelsPerInch liefert Anzahl Bildpunkte pro Zoll

    Leider nur VERTICAL!!! (BCB- Hilfe anschauen 🕶 )

    Besser geht's mit WinAPI- Funktionen! Weis nur nicht mehr welche. 🙄

    Du brauchst ja die Werte vert/ horiz fuer Monitor UND Drucker!

    Ich glaub das war so was wie GetDeviceCaps o. ä.

    Im WinAPI- Forum erfaehrst Du da vielleicht mehr?



  • Hallo,

    Im WinAPI Forum kannst du dann konkret nach der Funktion

    int GetDeviceCaps(
      HDC hdc,     // handle to the device context
      int nIndex   // index of capability to query
    );
    

    mit den Indexparametern LOGPIXELSX und LOGPIXELSY fragen.



  • Erstmal danke für die Antworten.

    Für GetDeviceCaps benötigt man das Handel beim Drucker ist das Printer()->Handle.
    Wo bekomme ich das Handle für den Monitor her?



  • Vielleicht so
    Screen->Monitors[0]->Handle



  • Ich bekomme aber für jedes nIndex- Parameter nur Null zurück.

    z.B.

    int Result = GetDeviceCaps(Screen->Monitors[0]->Handle, LOGPIXELSX);

    Als Ergebnis bekomme ich nur Null.
    Entweder ist die Funktion GetDeviceCaps für dem Monitor nicht geeignet oder das Handle von Screen->Monitors[0]->Handle ist nicht richtig.



  • Ok, der Handle von Monitor ist nicht dafür geeignet. Versuch statt dessen mal
    int Result = GetDeviceCaps(GetDC(0), LOGPIXELSX);


Anmelden zum Antworten