![]() |
[gelöst] Drucken: Device Units = Pixel?
Hallo :hi:
Eine kleine Frage: Sind die im MSDN genannten Device Units identisch mit der Größe 1 Pixel auf TPrinter.Canvas? Zitat:
![]() Falls nicht: Wie kann ich Device Units in Pixel umrechnen? Noch eine Frage: Liegt der Punkt ( 0 | 0 ) auf TPrinter.Canvas immer im bedruckbaren Bereich oder muss man sich selbst darum kümmern, indem man die X/Y Offsets addiert? Grüße, Dani |
Re: Drucken: Device Units = Pixel?
Zur ersten Frage: Nein. Setze lieber den MapMode mit
![]() Und wo deine Koordinate 0/0 liegt hängt ganz von deinem Koordinatensytem ab und vom gestezten MapMode. Um den Ursprung des Koordinatensystem zu legen kannst du die Funktionen ![]() ![]() |
Re: Drucken: Device Units = Pixel?
Zitat:
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 --------------------------- |
Re: Drucken: Device Units = Pixel?
Der Punkt 0,0 ist standardmäßig die linke obere ecke des Blattes und ist in der regel außerhalb des druckbaren bereiches. Ich würde beim drucken auch die Millimeter angabe bevorzugen da so gut wie kein Enduser weiß wie breit sein blatt in pixeln ist bzw. hängt dies ja beim bildschirm schon von der Auflösung ab und ist somit kein geeignettes maß für einen Endbenutzer. Da du über die property PageWidth und PageHeight die größe des Blattes bekommst kann es dir aber eigentlich egal sein ob du in pixeln oder Millimetern etc. rechnest da du vermutlich immer das gleiche verhältnis benutzt so das dein bild immer 3/4 des blattes oder so ausfüllt. Naja, ich rate dir einfach von der Benutzung von pixeln ab da die Größe sonstn je nach druckauflösung variiert wenn du nicht auf das Seitenverhältnis eingehst
|
Re: Drucken: Device Units = Pixel?
Zitat:
Zitat:
Die TBitmaps haben A4-Format und sind immer 2454 x 3474 Pixel breit/hoch, das entspricht einem Scan auf 300 DPI. Der User muss sich also keine Gedanken machen, dass das Bild verzerrt ausgedruckt wird. Das Hauptproblem sind halt diese "Device Units", ich kann mir leider keinen Reim darauf machen, wie viel so eine "Geräte-Einheit" nun darstellt. Verstanden hab ich, dass die Größe von der DPI-Zahl und dem eingelegten Papier (da werde ich einfach A4 voraussetzen) abhängt. Ob ich nun mit Millimeter oder mit Pixeln arbeite, die Größe der nicht bedruckbaren Ränder muss erstmal in was "Vernünftiges" umgerechnet werden... :wiejetzt: Grüße, Dani |
Re: Drucken: Device Units = Pixel?
So. Hab mal nen Pixel auf 0/0 gesetzt, der wurde ausgedruckt. Daraus schließe ich mal, dass die Druckränder in Printer.Pagewidth und Pageheight bereits einberechnet sind. Bleibt noch das Problem mit den Device Units :gruebel:
Edit: 1 Device Unit = 1 / Auflösung des Druckers in DPI *schäm* |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz