AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia 24-Bit Bitmap wird nur schwarz/weiß gedruckt
Thema durchsuchen
Ansicht
Themen-Optionen

24-Bit Bitmap wird nur schwarz/weiß gedruckt

Ein Thema von Luckie · begonnen am 25. Apr 2006 · letzter Beitrag vom 26. Apr 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

24-Bit Bitmap wird nur schwarz/weiß gedruckt

  Alt 25. Apr 2006, 11:36
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

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

  Alt 25. Apr 2006, 11:50
Also ich würd mal sagen du hats im Druckertreiber "Druckcn in Graustufen" eingestellt
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

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

  Alt 25. Apr 2006, 11:58
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

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

  Alt 25. Apr 2006, 13:44
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.

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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 25. Apr 2006, 14:56
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

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

  Alt 25. Apr 2006, 15:17
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 25. Apr 2006, 15:40
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?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

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

  Alt 25. Apr 2006, 21:40
So, es liegt an dem PDF Drucker an der Arbeut. Die Freeware Version kann wohl nur s/w. 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.

Canvas.Draw(LEFTMARGIN*10, -(FLogoBitmap.Height+TOPMARGIN*10), FLogoBitmap); :grubel:

Was ist denn das nun schon wieder?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

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

  Alt 25. Apr 2006, 22:21
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

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

  Alt 25. Apr 2006, 22:35
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 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