![]() |
Drucken mit Maßeinheiten (cm)
Hi,
wenn ich auf das Druckercanvas zeichne mache ich dies ja in Pixeln. Wie kann ich, z. B. ein Bild, in Zentimeter (cm) ausrucken? Pixel kann man ja nicht in cm umrechen... Wie könnte ich das dann realisieren? |
Re: Drucken mit Maßeinheiten (cm)
mit der Funktion SetMapMode kannst du das umstellen.
|
Re: Drucken mit Maßeinheiten (cm)
Letztendlich hängt die Ausgabe-Größe / Auflösung eines Bildes
von den ppi / dpi ab, die darauf angewandt werden. ppi = Pixel per Inch (beim Screen verwendet) dpi = dots per Inch (beim Druck verwendet) Hier mal ein Vergleich der Ausgabegröße, wenn bei einem Bild von 2000 x 2000 Pixel die PPI geändert werden: 72 ppi : 70,56 cm 150 ppi : 33,87 cm 300 ppi : 16,93 cm Dabei entsprechen 1 Zoll/Inch = 2,54 cm Ein Ausdruck in guter Qualität (Industriedruck) benötigt ca. 300ppi - auf einem Tintenstrahldrucker können es auch weniger sein. Der richtige / gewünschte Ausdruck ist also immer ein Zusammenspiel aus Auflösung und Ausmaßen des Bildes. Nur so zur Info ;-) Gruß Pfoto |
Re: Drucken mit Maßeinheiten (cm)
Zitat:
Delphi-Quellcode:
das sind zwar Pixel/Zoll (dpi = Dot per Inch), aber das kann kein ernsthaftes Hindernis sein.
xdpi := GetDeviceCaps (Printer.Handle, LOGPIXELSX);
Grundsätzlich kannst du das selber rechnen, oder du setzt einen anderen Windows-Mapping-Mode ein. Der Umgang damit ist aber nicht ganz trivial, ich habe daher bisher immer selbst umgewandelt, und zwar (wichtig!) nur an einer einzigen Stelle in der Software. Gruss Reinhard |
Re: Drucken mit Maßeinheiten (cm)
Wenn Du den Drucker fragst, wieviele dpi (Dots per Inch) er kann, kannst Du diesen Wert leicht in sonstwas umrechnen.
Allerdings solltest Du dabei beachten, dass viele Drucker unterschiedliche Werte für ihren dpi-Wert zurückliefern. Je nachdem, ob Du deren s/w- oder Farbdruck abfragst. Alte Epsons machen Dir dabei die Hölle heiß, falls sie nicht als Standarddrucker eingestellt sind. mfg |
Re: Drucken mit Maßeinheiten (cm)
Hat eigentlich irgendjemand das Posting von Sir Thornberry gelesen? :?
|
Re: Drucken mit Maßeinheiten (cm)
Zitat:
Ich finde alle bisherigen Post haben auch etwas zum Hintergrundwissen beigetragen. Und das ist gut so. Gerd |
Re: Drucken mit Maßeinheiten (cm)
Zitat:
Ansonsten... [VORKAU=ON]
Delphi-Quellcode:
und eine Umrechnung als Beispiel...
LogX := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
LogY := GetDeviceCaps(Printer.Handle, LOGPIXELSY); XMax := GetDeviceCaps(Printer.Handle, PHYSICALWIDTH); YMax := GetDeviceCaps(Printer.Handle, PHYSICALHEIGHT); DruckX := Printer.PageWidth; DruckY := Printer.PageHeight; Rand_Links := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX); Rand_Oben := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
Delphi-Quellcode:
function mmtoxpix(X:Extended):integer;
begin X := X * logX / 25.4; result := trunc(X)-Rand_Links; end; function .mmtoypix(Y:Extended):integer; begin Y := Y * logy / 25.4; result := trunc(Y)-Rand_oben; end; [VORKAU=OFF] Frank :coder: |
Re: Drucken mit Maßeinheiten (cm)
Zitat:
hättest du mein Posting ganz gelesen, hätte sich die Frage erübrigt. Mapping Modes unter Windows sind nicht so ganz trivial, man bekommt es dann mit den Beziehungen zwischen Window und Viewport zu tun, was sehr leistungsfähig ist, aber das muss man auch erstmal verstehen. Daher meine Meinung, dass auch die Umrechnung in der eigenen Software eine bedenkenswerte Alternative ist - 2 Befehle an der geeigneten Stelle erledigen das. Mag sein, dass du der Meinung bist, SetMapMode löst alle Probleme der Welt, ich bin anderer Meinung, und soviel muss hier auch noch erlaubt sein. Gruss Reinhard |
Re: Drucken mit Maßeinheiten (cm)
Danke für eure Antworten. Ich werde beide Routinen ausprobieren. Melde mich später wieder :-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:25 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 by Thomas Breitkreuz