Millimeter in Pixel umwandeln ?

Reticent

Erfahrenes Mitglied
Hi Leute,


hab folgendes Problem. Ich möchte ein Bitmap anzeigen, aber seine Position in Millimeter angeben. Wie kann ich es tun?

Es geht halt um ein gescanntes Bild. Jetzt möchte ich ein Bereich ausschneiden und anzeigen. Auf Papier habe ich z.B. 2 mm Abstand vom linken Rand. Wie rechne ich es jetzt in Pixel im Bitmap?

Ich find niergendwo eine Funktion die mir Millimeter in Pixel umwandelt.

Hat jemand Erfahrung damit? Bin dankbar für jeden Tipp.
 
hab das gefunden:

Code:
SetMapMode(hdc, iMapMode )
wenn ich jetzt MM_LOMETRIC benutze, wie soll ich z.B. Bild.left = ? angeben wenn es 2mm seien sollen?
 
Code:
 MSDN:

MM_LOMETRIC 	Each logical unit is mapped to 0.1 millimeter. Positive x is to the right; positive y is up.

1 entpricht 0.1 mm. Dass heißt, dass 2mm 20 entspricht. :)
 
danke, das weiss ich. Ich habe versucht meine Werte einfach duch 0.1 zu teilen.
Es wird aber nicht so angezeigt wie ich erwartet habe.

ah... wie kann ichs blos erklären... So:

Ich scanne ein Bild von Größe 125*88 mm. Jetzt möchte ich ein Bereich ausschneiden. Abstand von links 2mm und von oben 15mm, 35mm breit und 45mm hoch. Ich setze es so:
Code:
m_PhotoRect.left	= 2 /0.1;
m_PhotoRect.top	= 15 /0.1;
m_PhotoRect.right	= 35 /0.1;
m_PhotoRect.bottom	= 45 /0.1;
um jetzt Bild zu zeigen mache ich
Code:
HDC hDC= ((CStatic*)GetDlgItem(idc))->GetDC()->m_hDC;
CRect rect ;
((CStatic*)GetDlgItem(idc))->GetClientRect(&rect);
SetMapMode(hDC, MM_LOMETRIC);
L_PaintDC(hDC, &m_Photo1,  m_PhotoRect, NULL, rect, NULL, SRCCOPY);
das Bild wird aber erstens überhaupt nicht an der stelle gemalt wo ich mein PictureControl habe. und auch viel kleiner als der Bereich, den ich ausschneiden will.

Was mache ich den falsch?
 
Zuletzt bearbeitet:
Zurück