Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   24-Bit Bitmap wird nur schwarz/weiß gedruckt (https://www.delphipraxis.net/68142-24-bit-bitmap-wird-nur-schwarz-weiss-gedruckt.html)

Luckie 25. Apr 2006 11:36


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:
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));
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?

Einen richtigen Farbdrucker habe ich leider im Moment nicht zur Verfügung.

franktron 25. Apr 2006 11:50

Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
 
Also ich würd mal sagen du hats im Druckertreiber "Druckcn in Graustufen" eingestellt

Luckie 25. Apr 2006 11:58

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.

Luckie 25. Apr 2006 13:44

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:
BitBlt(Canvas.Handle, LEFTMARGIN * 10, -(TOPMARGIN * 10), FLogoBitmap.Width * 10, -(FLogoBitmap.Height*10),
  FLogoBitmap.Canvas.Handle, 0, 0, SRCCOPY);
Ich werde noch mal wahnsinnig.

himitsu 25. Apr 2006 14:56

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.

Luckie 25. Apr 2006 15:17

Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
 
Das
Delphi-Quellcode:
     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');
...ergibt eine weiße Fläche in der Größe des Bitmaps. :(

Und das:
Delphi-Quellcode:
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');
...ergibt das original farbige Bild wieder.

himitsu 25. Apr 2006 15:40

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?

Luckie 25. Apr 2006 21:40

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:
Canvas.Draw(LEFTMARGIN*10, -(FLogoBitmap.Height+TOPMARGIN*10), FLogoBitmap);
:grubel:

Was ist denn das nun schon wieder? :wall:

SirThornberry 25. Apr 2006 22:21

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.

Luckie 25. Apr 2006 22:35

Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
 
Zitat:

Zitat von SirThornberry
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.

Aber warum macht es denn dann der PDF-DRucker richtig?

himitsu 26. Apr 2006 12:19

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:
SetDeviceCaps(Printer.Handle, BITSPIXEL, 24);
Ganz unten, in der uralten Demo, steht auch nochmal was zum MapMode :)





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 ^^

Luckie 26. Apr 2006 12:31

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.

MStoll 26. Apr 2006 12:32

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

Mavarik 26. Apr 2006 12:32

Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
 
Schau dir mal mein Posting aus folgendem Thread an:

HIER

Frank :coder:

MStoll 26. Apr 2006 12:33

Re: 24-Bit Bitmap wird nur schwarz/weiß gedruckt
 
@Luckie:
Schreibst du bitte, was du gemacht hast?

Luckie 26. Apr 2006 12:35

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.

MStoll 26. Apr 2006 12:40

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 18:00 Uhr.

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