Zitat:
Setze lieber den MapMode mit SETMAPMODE entsprechen auf Millimeter oder so, dann hast du es einfacher.
Hmm, warum? Entspricht eine Device
Unit denn einem Milimeter?
Wieso ist es einfacher, auf Millimeter umzusteigen, wenn man vorher die ganze Zeit in Pixel rechnet (mal angenommen, es soll ein TBitmap ausgedruckt werden).
Der MapMode ist standardmäßig MM_TEXT. Was halt interessant wäre ist, ob die Koordinate 0/0 auf TPrinter.Canvas physikalisch dem ersten
druckbaren oberen linken Punkt entspricht.
Edit:Die Werte von Printer.PageWidth bzw. PageHeight und die Ergebnisse von GetDeviceCaps(Printer.Handle, PHYSICALWIDTH bzw. PHYSICALHEIGHT) ähneln sich halt verdächtig, daher die Annahme.
Bsp: Drucker mit 360 DPI, DIN A4 Hochformat:
---------------------------
Project1
---------------------------
Links die Ergebisse von GetDeviceCaps in "Device Units"
Rechts die Eigenschaftswerte von TPrinter in Pixel
Seitenbreite: 2976/2878
Seitenhöhe: 4209/4066
Druckränder: X: 49 Y: 43
---------------------------
OK
---------------------------
Dani H.