Entwickler-Ecke
Multimedia / Grafik - Etikett drucken per Printer.StretchDraw,nicht richtig scwarz
jjturbo - Fr 27.08.10 07:48
Titel: Etikett drucken per Printer.StretchDraw,nicht richtig scwarz
Moin Forum,
ich zeichne mir die Daten eines zu druckenden Etikettes auf ein Bitmap, wobei das Längen-/Breitenverhältnis des Bitmaps des tatsächlichen Etiketts entspricht.
Jetzt schicke ich das Bitmap an den Drucker:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| if PrintDialog1.Execute then begin with Printer do begin Title := Application.Title + ' Etikett drucken '; BeginDoc; Canvas.StretchDraw(Canvas.ClipRect,MyImage.Picture.Bitmap); EndDoc; end; end; |
Dadurch werden aber schwarze Flächen nicht mehr richtig schwarz dargestellt, die Kanten der Schriften sind unscharf. Wie kann man es besser machen? Auf dem Bildschirm wird alles gestochen scharf dargestellt.
Gruß Oliver
Xion - Fr 27.08.10 08:48
Wenn du StretchDraw verwendest, dann kann es sein, dass er stretched :D Gibts kein einfaches "Draw"
Hast du bedacht dass der Drucker ne höhere Auflösung hat? Machs mal so: Breite und Höhe des Bitmaps mal 3, entsprechend groß das Etikett ins Bitmap zeichnen und dann StretchDraw. Auf dem Drucker muss natürlich die Größe des Rects gleich bleiben, also nicht mal 3
Gerd Kayser - Sa 28.08.10 08:26
Xion hat folgendes geschrieben : |
| Hast du bedacht dass der Drucker ne höhere Auflösung hat? Machs mal so: Breite und Höhe des Bitmaps mal 3, entsprechend groß das Etikett ins Bitmap zeichnen und dann StretchDraw. Auf dem Drucker muss natürlich die Größe des Rects gleich bleiben, also nicht mal 3 |
Es gibt auch Drucker mit krummen Auflösungen, z. B. 600 * 300 dpi. Besser ist es, die Auflösungen (LogPixelsX bzw. LogPixelsY) mit GetDeviceCaps vorher zu ermitteln.
Ich habe auch noch dunkel in Erinnerung (lang ist es her ...), daß man statt Stretchdraw besser StretchDIBits verwenden sollte. Beispiel siehe hier:
http://www.swissdelphicenter.ch/de/showcode.php?id=744
Eine andere Alternative wäre, direkt auf Printer.Canvas zu zeichnen und zu schreiben. Gerade beim Erstellen von Ertiketten bietet es sich doch an, bei Printer.Canvas eine Auflösung von 1/10 mm einzustellen. Man kann auch den Koordinatenursprung nach oben links in die Ecke verlegen.
Falls gewünscht, kann ich den SourceCode von meinem Etikettendruckprogramm per Email zuschicken (etwa 500 Zeilen).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!