![]() |
Drucken auf verschiedenen Druckern = unterschiedliche Größe
Hi liebe Forumsgemeinde ;)
Ich habe ein bischen mit der Druckfunktion in Delphi herumprobiert und muß sagen.. so weit so gut. Mir ist eine Sache aufgefallen: Wenn ich den Ausdruck eines BIldes auf dem MicrosoftImagingPrinter (oder so), das ist dieser Drucker, der dem Ausdruck als Bild speichert, mache, bekomme ich mit:
Delphi-Quellcode:
bei obigem Skalierungsfaktor ein Bildfüllendes Ergebnis.
x.Left := PageSetupDialog1.MarginLeft;
x.Right := Round(Image1.Picture.Graphic.Width * 3.2); x.Top := PageSetupDialog1.MarginTop; x.Bottom := Round(Image1.Picture.Graphic.Height * 3.2); Printer.BeginDoc; Printer.Canvas.StretchDraw(x,Image1.Picture.Graphic); Printer.EndDoc; Wenn ich das gleiche auf meinem Hp Lasterjet mache habe ich max. ein Viertel der Seite belegt. Kann das evtl. dara liegen, daß die beiden Drucker ein unterschiedliches Maßsystem haben? Sprich: HP Drucker misst z.B. in 1/10mm Einheiten und der MSImagingDrucker in 1/5mm Einheiten. Kann das sein? Wenn ja, wie passe ich das im Code an, daß beide die gleiche Grundlage verwenden, oder ich das Problem umgehen kann? Viele Grüße Mirko |
Re: Drucken auf verschiedenen Druckern = unterschiedliche Gr
Hi,
ist ein typisches Problem beim Drucken, eigentlich solltest du da sehr sehr schnell mit der Suche fündig werden. Ich glaube die Funktion die das korrigiert heißt SetDeviceCaps (such einfach noch mal in der DP). Mit deiner Einschätzung liegst du gar nicht so falsch, allerdings variiert nur die Auflösung des Druckers. Wenn du dir einen Drucker kaufst, dann findest du hier ja auch Laserdrucker im Bereich von 600x600dpi oder 1200x1200dpi und Tintenstrahler, die hier ganz andere Werte liefern. An sich bekommst du damit sogar unterschiedliche Ausgaben auf dem selben Drucker, wenn du hier einfach mal die Auflösung änderst. Die Standardeinheit, mit der du hier arbeitest sind einfach Pixel. Da die Auflösung der Anzahl von Pixeln pro Inch entspricht, regelst du damit also auch immer die Größe eines Pixels. SetDeviceCaps bietet da die Möglichkeit, dass du eine andere Einheit (z.B. zehntel-millimeter) verwendest, die dann unabhängig von der Pixelgröße ist. Gruß Der Unwissende |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 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