AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi [gelöst] Drucken: Device Units = Pixel?
Thema durchsuchen
Ansicht
Themen-Optionen

[gelöst] Drucken: Device Units = Pixel?

Ein Thema von Dani · begonnen am 1. Aug 2004 · letzter Beitrag vom 2. Aug 2004
Antwort Antwort
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#1

[gelöst] Drucken: Device Units = Pixel?

  Alt 1. Aug 2004, 23:48
Hallo

Eine kleine Frage: Sind die im MSDN genannten Device Units identisch mit der Größe 1 Pixel auf TPrinter.Canvas?
Zitat:
PHYSICALWIDTH For printing devices: the width of the physical page, in device units. For example, a printer set to print at 600 dpi on 8.5-x11-inch paper has a physical width value of 5100 device units. Note that the physical page is almost always greater than the printable area of the page, and never smaller.
Zum MSDN

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
Dani H.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Drucken: Device Units = Pixel?

  Alt 1. Aug 2004, 23:59
Zur ersten Frage: Nein. Setze lieber den MapMode mit MSDN-Library durchsuchensetmapmode entsprechen auf Millimeter oder so, dann hast du es einfacher.

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 MSDN-Library durchsuchensetviewportorg und MSDN-Library durchsuchenSetwindoworgexe benutzen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Drucken: Device Units = Pixel?

  Alt 2. Aug 2004, 00:24
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.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Drucken: Device Units = Pixel?

  Alt 2. Aug 2004, 07:02
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
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Drucken: Device Units = Pixel?

  Alt 2. Aug 2004, 12:42
Zitat:
Der Punkt 0,0 ist standardmäßig die linke obere ecke des Blattes und ist in der regel außerhalb des druckbaren bereiches.
Gut zu wissen, danke!

Zitat:
Ich würde beim drucken auch die Millimeter angabe bevorzugen da so gut wie kein Enduser weiß wie breit sein blatt in pixeln ist {...}
Naja der End User will in diesem Fall lediglich eine Grafik (TBitmap) auf Seitengröße gestretched haben. Hab vergessen das im ersten Post zu erwähnen.
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...


Grüße,
Dani
Dani H.
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Drucken: Device Units = Pixel?

  Alt 2. Aug 2004, 14:39
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

Edit:
1 Device Unit = 1 / Auflösung des Druckers in DPI
*schäm*
Dani H.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz