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 dienen1-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);