![]() |
feste Größe beim Drucken
Ich möchte ein Rechteck ausdrucken, dass immer die Gleiche Größe (Kantenlänge in cm) hat.
Da aber die PageWidth und Height von Drucker zu Drucker unterschiedlich sein kann (auf Grund der DpI Zahl?!), finde ich zur Zeit keinen Ansatz. Hat jemand eine Idee? |
Re: feste Größe beim Drucken
Weiß denn jemand wie man die eingestellte DpI Zahl ermittelt?
|
Re: feste Größe beim Drucken
Hallo Tpercon,
da wirst Du Dich wohl in die Tiefen der Win-API begeben müssen. Nur ein paar Stichworte: SetMapMode, GetDCEx, GetSystemMetrics , ... |
Re: feste Größe beim Drucken
Habe mich gestern versucht damit zu befassen, doch leider nichts irgendwie in die Richtung DPI herausbekommen. Daher bin ich wieder ganz am Anfang.
Hat vielleicht jemand noch ein genaueres Beispiel oder sonst einen Rat? |
Re: feste Größe beim Drucken
für ein 300 * 100 großes Rechteck versuche:
rechteck.top: frei wählbarer Abstand zum oberen Bildrand; rechteck.left: frei wählbarer Abstand zum linken Bildrand; rechteck.right: rechteck.left + Printer.pagewidth div 1024 * 300; rechteck.bottom; rechteck.top + printer.pageheight div 768 * 100; Das natürlichnur für den Fall, dass das Rechteck auf der Auflösung 1024 * 768 eine vorteilhafte Größe hat. Das ist allerdings unabhängig von deiner Bildschirmauflösung. Kannst die Zahlen ja auch ändern. Die einzige Abweichung die du jetzt bei der Rechteckgröße noch bekommen solltest ist der %-Satz den der jeweilige Drucker gegenüber einem anderen Drucker an Rahmen mehr oder weniger um das Papier macht. Hoffe das hilft dir ein bisschen! Gruß Jan |
Re: feste Größe beim Drucken
Wieso soll das rein logisch, dann überall gleich groß sein :?:
Auf einem Drucker, der mit 600 DPI druckt ist es doch kleiner, als auf einem der 300 DPI druckt. Du änderst doch nur nen Faktor?! |
Re: feste Größe beim Drucken
also wenn ich die Frage recht verstanden hab müsste es gehen wenn du mit
SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC); die einheit der Printer Canvas auf 1/10 mm stellst. danach solltest du mit printer.Canvas.FillRect(0,0,100,-100); ein Quadrat aufm Blatt haben das 1 cm mal 1cm groß ist unabhängig von der dpi zahl des druckers |
Re: feste Größe beim Drucken
Ich probier es heute Abend gleich aus, wobei ich gestern eigentlich schon damit rum probiert hatte. :gruebel:
Wobei ich hatte das "Positive x is to the right; positive y is up." nicht beachtet und nur positive Werte genommen. Das leere Blatt kann also daher kommen. |
Re: feste Größe beim Drucken
@typercon
Das stimmt nicht. wenn die Auflösung des Druckers Niedriger ist, dann ist die auch die Pagewidth/height niedriger und damit wird der quotient von den seitenmaßen und der Auflösung kleiner, was zur folge hat, dass das produkt von der Auflösung des Rechtecks und dem Quotienten entsprechend niedriger ist, bei einer niedrigen Druckauflösung also genauso gross wie bei einer höheren. Toll Wa?? Hab ich auch ne weile dran geackert bis ich das mal in mein Hirn reingepresst hatte. 8) Vielleicht probierste das einfach mal! Gruß Jan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 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