![]() |
24-Bit Bitmap wird nur schwarz/weiß gedruckt
Ich drucke auf den Canvas des Druckers. Unteranderem soll auch ein Bitmap als Logo gedruckt werden. Nur leider wird das immer in Graustufen gedruckt:
Delphi-Quellcode:
Egal, ob ich es jetzt mit Draw oder CopyRect auf den Canvas des Druckers ausgebe, es wird immer nur in Graustufen ausgegeben. Das Bitmap ist ein 24Bit Bitmap mit Paint erstellt. Drucken tue ich zur Zeit auf einen PDF Drucker, dieser ist aber so konfiguriert, dass er Bitmaps mit 24Bit druckt. Aber warum ist das Bitmap auf dem Dokument immer nur in Graustufen?
FLogoBitmap := TBitmap.Create;
FLogoBitmap.PixelFormat := pf24bit; FLogoBitmap.LoadFromFile(LogoFile); //Canvas.Draw(LEFTMARGIN*10, -(FLogoBitmap.Height+TOPMARGIN*10), FLogoBitmap); Canvas.CopyRect(Rect(LEFTMARGIN * 10, -(TOPMARGIN * 10), FLogoBitmap.Width * 10, -(FLogoBitmap.Height * 10)), FLogoBitmap.Canvas, Rect(0, 0, FLogoBitmap.Width * 10, FLogoBitmap.Height *10)); Einen richtigen Farbdrucker habe ich leider im Moment nicht zur Verfügung. |
Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
Also ich würd mal sagen du hats im Druckertreiber "Druckcn in Graustufen" eingestellt
|
Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
Eigentlich nicht. Ich habe schon in der Konfiguration des PDF Druckers nachgeguckt, da sah alles in Ordnung aus.
Nachtrag: Die Testseite vom PDF Drucker wird farbig gedruckt, es muss also an meinem Code liegen. Oder kann es mit dem Bitmap zusammenhängen, das von Paint erstellt wird? Ich probiere mal ein anderes aus. |
Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
Neue Erkenntnisse.
Also am Bitmap liegt es nicht. Ich habe jetzt mal das 8Bit Windows Logo aus dem Windows Ordner genommen, das wird auch in Graustufen gedruckt. :wall: Auch setzen des CopyModes von Canvas hat nichts geholfen, eben so das Benutzen von BitBlt anstatt der VCL Methoden:
Delphi-Quellcode:
Ich werde noch mal wahnsinnig.
BitBlt(Canvas.Handle, LEFTMARGIN * 10, -(TOPMARGIN * 10), FLogoBitmap.Width * 10, -(FLogoBitmap.Height*10),
FLogoBitmap.Canvas.Handle, 0, 0, SRCCOPY); |
Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
Schau doch mal nach mit was für "Farben" die Canvas des Druckers arbeitet.
Eventuell nach deinen Zeichenversuchen (vorm Absenden des Druckauftrags) den Inhalt der Canvas in ein anders BitMap kopieren und auf dem Bildschirm ausgeben, oder per SaveToFile erstmal in eine Datei. |
Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
Das
Delphi-Quellcode:
...ergibt eine weiße Fläche in der Größe des Bitmaps. :(
bmp := TBitmap.Create;
bmp.Width := FLogoBitmap.Width; bmp.Height := FLogoBitmap.Height; bmp.PixelFormat := pf8bit; Canvas.CopyRect(Rect(LEFTMARGIN * 10, -(TOPMARGIN * 10), FLogoBitmap.Width * 10, -(FLogoBitmap.Height * 10)), FLogoBitmap.Canvas, Rect(0, 0, FLogoBitmap.Width * 10, FLogoBitmap.Height *10)); bmp.Canvas.CopyMode := cmSrcCopy; Bmp.Canvas.CopyRect(Rect(0, 0, bmp.Width, bmp.Height), Printer.Canvas, Rect(0, 0, bmp.Width, bmp.Height)); bmp.SaveToFile('d:\test.bmp'); Und das:
Delphi-Quellcode:
...ergibt das original farbige Bild wieder.
bmp := TBitmap.Create;
bmp.Width := FLogoBitmap.Width; bmp.Height := FLogoBitmap.Height; bmp.PixelFormat := pf8bit; Canvas.CopyRect(Rect(LEFTMARGIN * 10, -(TOPMARGIN * 10), FLogoBitmap.Width * 10, -(FLogoBitmap.Height * 10)), FLogoBitmap.Canvas, Rect(0, 0, FLogoBitmap.Width * 10, FLogoBitmap.Height *10)); Bmp.Assign(FLogoBitmap); bmp.SaveToFile('d:\test.bmp'); |
Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
Also arbeitet die Canvas des Druckers schonmal in Grau -.-''
(na so wird es natürlich unmöglich sein da farbiges zum Drucker zu bekommen) eventuell kann/muß man das ja noch irgendwo umstellen, nur als ich das letztemal mit Printer.Canvas gearbeitet hatte, nahm das erst immer die Standardeinstellung vom Drucker an. (hab noch'n Demoprogie für die Printer-Unit, kann die ja morgen mal hochladen ... die zeigt zumindestens mal an, was mit/auf der PrinterCanvas möglich ist) PS: ist das richtig, daß du mal nur Canvas und dann wieder Printer.Canvas verwendest? |
Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
So, es liegt an dem PDF Drucker an der Arbeut. Die Freeware Version kann wohl nur s/w. :wall: Auf meinem Drucker ist es farbig und mit meinem PDF Drucker auch.
Jetzt habe ich aber das nächste Myterium. Der Drucker, druckt es auf dem Kopf und im PDF ist es richtig. :shock:
Delphi-Quellcode:
:grubel:
Canvas.Draw(LEFTMARGIN*10, -(FLogoBitmap.Height+TOPMARGIN*10), FLogoBitmap);
Was ist denn das nun schon wieder? :wall: |
Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
das es auf dem Kopf steht liegt am MapMode. Normalerweise wird der Y-Wert bei der Canvas nach unten hin größer. Bei dem Mapmode den du wohl verwendest wird der Y-Wert nach unten hinn jedoch geringer (geht ins Minus). Du musst also das Bild vor dem Drucken auf den Kopf stellen und durch den Mapmode wird es dann zurück gespiegelt.
[OT]@Luckie: Du schreibst das du einen PDF-Drucker in einer eingeschränkten Freeware-Version nutzt. Wieso das? Installiere dir doch einfach einen Postscriptdrucker und installiere das. Mit GSView (Ghostview) kannst du das ganze anschauen und bei bedarf in PDF konvertieren. |
Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
Zitat:
|
Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
Liste der Anhänge anzeigen (Anzahl: 1)
Laut deiner Beschreibung sollte wohl bei "Pixelauflösung (Bit pro Farbe)" was von 256 stehen, obwohl du natürlich gern 24 hättest?
Ein "normaler" Farbdrucker hat bei "echte gemischte Farben (keine Rasterfarben)" wohl etwas wie 'ne 8 stehen (3 Farben = 8 100%ige Mischfarben). Eventuell gibt's ja auch sowas wie (hab's zwar noch nicht gefunden, aber man weiß ja nie ._.):
Delphi-Quellcode:
Ganz unten, in der uralten Demo, steht auch nochmal was zum MapMode :)
SetDeviceCaps(Printer.Handle, BITSPIXEL, 24);
Zum verkehrtherum, wenn es jetzt nicht schon den anderen Thread gäbe, dann würde ich wohl "Tja, jemand/etwas macht da wohl etwas falsch" gesagt ^^ |
Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
Das mit dem farbig Drucken hat sich erledigt. Es leigt wohl am PDF-Drucker. Aber Danke für deinen Hinweis.
|
Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
Hi,
ich habe das gleiche Problem. Meine Testdrucker: HP OfficeJet (Farbe) Kyocera 3830N (Laser s/w) PDFCreator Win2PDF AdobePDF Desweiteren teste ich auf 5 Notebooks sowie 3 PCs. Ergebnis: Auf dem OfficeJet drucken sie alle in Farbe. Nur bei den PDF-Treibern gibt es Unterschiede zwischen den Rechnern. Also auf dem einen Teil der Rechner werden die PDFs farbig, auf den anderen grau. Und alle PDF-Druckertreiber verhalten sich auf dem gleichen System immer gleich. Wir haben auch teilweise WinXP Home und teilweise WinXP Prof. --> Eigentlich kann es weder an der Art des Windows (Home oder Prof) liegen, noch an den Druckertreibern. Es muss irgendeine Einstellung von Windows oder eine Einstellung der Druckausgabe sein, die irgendwie in Verbindung mit den PDF-Druckertreibern steht. D.h. das Problem tritt nur in Verbindung mit PDF-Druckausgabe auf (jedenfalls bei mir) Vielleicht hilft dir das weiter. Wäre nett, wenn du schreibst, falls du eine Lösung gefunden hast. Das wäre auch für mich sehr hilfreich. Wenn du mal was wichtiges getestet haben willst, meld dich mal. Ich hab ja mehrere Systeme, auf denen ich testen kann. Gruß Michael |
Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
|
Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
@Luckie:
Schreibst du bitte, was du gemacht hast? |
Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
Wie gesagt, ich habe gar nichts gemacht, außer dass ich zu dem Schluss gekommen bin, dass es wohl an meinem PDF-Drucker liegt, der übrigens auch der PDFCreator ist. Mit meinem PDF-Drucker zu Hause und auf meinen Tintenpubser ist es farbig.
|
Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
Verhält sich bei dir auf dem gleichen System, das Graustufen gedruckt hat, ein anderer PDF-Drucker anders?
Bei mir gibt's keine Unterschiede zwischen den PDF-Treibern. Sie verhalten sich alle je nach System einmal wie ein schwarz-weiß-Drucker und einmal wie ein Farb-Drucker. [Edit]Ich kann z.B. mit dem PDFCreator auf meinem PC locker farbig drucken, auf einem anderen wiederum nicht.[/Edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 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