Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   C++ Maßeinheitengenau ein Canvas ausdrucken (https://www.delphipraxis.net/89211-masseinheitengenau-ein-canvas-ausdrucken.html)

Der_Unwissende 28. Mär 2007 14:09

Re: Maßeinheitengenau ein Canvas ausdrucken
 
Zitat:

Zitat von matashen
gern geschehen :love:

:cheers: :dp: :hello:

Schließe ich mich bedingungslos an!

PAX 7. Apr 2007 15:23

Re: Maßeinheitengenau ein Canvas ausdrucken
 
So, das exakte Drucken von gezeichneten Linien funktioniert maßgenau. Textausgabe auf dem Drucker klappt zwar einigermaßen exakt, allerdings scheint es dennoch kleinere Schrifthöhenunterschiede zu geben, wenn ich einen Druck von 600dpi mit 150dpi vergleiche...

TrackBar1 enthält die Schrifthöhe. Mit dieser Formel berechne ich die Ausdruckschrifthöhe:
Code:
druck->Canvas->Font->Height = -Form1->TrackBar1->Position/25.4 *druck->Canvas->Font->PixelsPerInch;
Aber wie gesagt, es weicht ganz leicht von der Bildschirmvorschau ab und auch von unterschiedlichen dpi-Einstellungen des Druckers. Die Schriftgröße scheint bei 16-facher Vergrößerung identisch zu sein, allerdings wird bei der niedrigeren dpi-Zahl der ganze Text um einige Pixel nach rechts und nach unten versetzt.

Was habe ich nicht bedacht?

Reinhard Kern 7. Apr 2007 17:09

Re: Maßeinheitengenau ein Canvas ausdrucken
 
Zitat:

Zitat von PAX
So, das exakte Drucken von gezeichneten Linien funktioniert maßgenau. Textausgabe auf dem Drucker klappt zwar einigermaßen exakt, allerdings scheint es dennoch kleinere Schrifthöhenunterschiede zu geben, wenn ich einen Druck von 600dpi mit 150dpi vergleiche...

TrackBar1 enthält die Schrifthöhe. Mit dieser Formel berechne ich die Ausdruckschrifthöhe:
Code:
druck->Canvas->Font->Height = -Form1->TrackBar1->Position/25.4 *druck->Canvas->Font->PixelsPerInch;
Aber wie gesagt, es weicht ganz leicht von der Bildschirmvorschau ab und auch von unterschiedlichen dpi-Einstellungen des Druckers. Die Schriftgröße scheint bei 16-facher Vergrößerung identisch zu sein, allerdings wird bei der niedrigeren dpi-Zahl der ganze Text um einige Pixel nach rechts und nach unten versetzt.

Was habe ich nicht bedacht?

Hallo,

wahrscheinlich, dass die Druckertreiber generell alles andere als perfekt sind. Ich habe mich mit dem Problem schon häufiger herumgeschlagen (für technische Linienzeichnungen) und festgestellt, dass Drucker an sich schon in der Lage sind, auf 0.1 mm genau zu drucken, dass aber von Drucker zu Drucker und von Treiber zu Treiber Unterschiede im mm-Bereich bestehen. Manche hochwertigen Druckertreiber sehen eine manuelle Korrektur vor (unter Eigenschaften kann man Prozente eingeben), aber auch die sind oft nicht genau genug - 0.1 % sind bei A4 immerhin schon 0.3 mm.

Ich denke, es wäre notwendig, in den eigenen Drucker-Routinen eine zusätzliche Korrektur an den berechneten Faktoren vorzusehen mit etwa +- 5% und einer Auflösung von 0.01% (!). Dann sollte man nach entsprechendem Vermessen einiger Ausdrucke eine Genauigkeit von 0.2mm oder so hinkriegen.

Die Umrechnung von Schriftgrössen muss damit nicht übereinstimmen, notfalls müsste man die extra behandeln.

Gruss Reinhard

DGL-luke 7. Apr 2007 18:54

Re: Maßeinheitengenau ein Canvas ausdrucken
 
Hallo,

ein Visitenkarten-Programm, dass ich benutze, versucht zuerst ein Fadenkreuz mit Skala in die Mitte des Blattes zu drucken und fordert den Benutzer dann auf, das Blatt in der Mitte zu falten und die Abweichung zwischen Falz und Fadenkreuz anzugeben. Daraus wird dann ein Korrektiv berechnet. Wenns dir also um genaue Ausrichtung geht, kannst du es so machen.

Um das Korrektiv umzusetzen gibt es eine API-Funktion, mit der du den Koordinatennullpunkt des Druckercanvas verschieben kannst - MSDN-Library durchsuchenSetWindowOrg könnte es sein, ich weiß es nicht genau.

PAX 8. Apr 2007 12:23

Re: Maßeinheitengenau ein Canvas ausdrucken
 
Der Zeichenabstand weicht auch ab, musste ich gerade feststellen.

Ich hatte auch schon den Gedanken, den Rahmen und den Text als eine Gesamtgrafik zu betrachten und diese entsprechend zu vergrößern für den Druck, allerdings bin ich mir nicht sicher, welche optische Qualität der Text dann nachher hat. Testen konnte ich dies bisher nicht, weil während des Vergrößerungsvorgangs jedes Mal der gesamte Computer massiv einfriert, wenn die Grafik schon vorher ziemlich groß war. Oder vielleicht lags auch am Adobe PDFwriter? Ich habs noch nie direkt ausgedruckt - wäre ja während der Entwicklungsphase reine Papierverschwendung!

Wie macht es eigentlich das Microsoft Office-Paket? Ist dort das Druckresultat nicht immer äußerst genau? Die arbeiten doch auch nicht mit Kallibrierungsdrucken?

Ich verstehe halt nicht, warum der Textdruck so ungenau ist (mit Methode TextOutA oder so) und die gezeichneten Linien hingehen völlig exakt?

Also nochmal zusammengefasst: Der Text erscheint bei unterschiedlichen dpi-Auflösungen nicht exakt an der selben Stelle, obwohl mein Code determiniert ist, und der Zeichenabstand variiert dann ebenfalls.

Ich danke euch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:44 Uhr.
Seite 2 von 2     12   

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