Einzelnen Beitrag anzeigen

Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Bild wird negativ gedruckt

  Alt 25. Jun 2008, 07:46
Unter negativ verstehe ich, dass das Bild als Negativ gedruckt wird. Sprich alle Farben werden invertiert ausgedruckt.

Ich werde die Funktion ausprobieren und melde mich hier wieder. Danke.

Nachtrag:

Folgendes Zwischenergebnis:

1. Wenn ich die genannte "PrintBitmap" Routine verwende, dann werden meine abgerundeten Ecken in Rosa gefärbt.
2. Wenn ich dann auf drucken gehe, wird das Bild richtig gedruckt, aber mit rosa Ecken.

Das Bild wird vorher folgendermaßen mit den Runden Ecken gesetzt:

Delphi-Quellcode:
procedure DoItRound(var myImage: TImage; pixels: Integer);
var bmp_mask,
    bmp_tmp : TBitmap;

const cl_trans_tmp = clWhite;
      cl_trans = clFuchsia;
begin
  bmp_mask := TBitmap.create;
  bmp_tmp := TBitmap.create;
  try
    //load bitmap
    bmp_tmp.Assign(myImage.picture.bitmap);

    //resize mask
    bmp_mask.PixelFormat := pf24bit;
    bmp_tmp.PixelFormat := pf24bit;
    bmp_mask.width := myImage.picture.bitmap.width;
    bmp_mask.height := myImage.picture.bitmap.height;

    //create the mask;
    bmp_mask.canvas.brush.color := cl_trans;
    bmp_mask.canvas.Pen.color := cl_trans;
    bmp_mask.Canvas.FillRect(rect(0,0,bmp_mask.width,bmp_mask.height));
    bmp_mask.canvas.brush.color := cl_trans_tmp;
    bmp_mask.canvas.Pen.color := cl_trans_tmp;
    bmp_mask.canvas.RoundRect(0,0,bmp_mask.width,bmp_mask.height, pixels,pixels);
    bmp_mask.TransparentColor := cl_trans_tmp;
    bmp_mask.Transparent := true;

    //merging the mask with original bitmap
    bmp_tmp.Canvas.Draw(0,0,bmp_mask);
    bmp_tmp.TransparentColor := cl_trans;
    bmp_tmp.Transparent := true;

    //Draw masked bitmap
   BitBlt(myImage.Canvas.Handle, 0, 0, myImage.picture.bitmap.width, myImage.picture.bitmap.height, bmp_tmp.canvas.Handle, 0, 0, srcCopy);
    myImage.canvas.draw(0,0,bmp_tmp);
    myImage.Picture.Bitmap.TransparentColor := cl_trans;
    myImage.Transparent := true;
  finally
    //free Objects
    bmp_tmp.free;
    bmp_mask.free;
  end;
end;
Wie gesagt. Die Routine funktioniert an sich sehr gut, um die runden Ecken in die Bilder zu bekommen. Nur der eine Drucker wehrt sich dagegen. Wenn ich die StrechDraw anwende, werden die Ecken transparent gezeichnet, aber das Bild als Negativ gedruckt. Verwende ich die genannte PrintBitmap Routine, dann wird das Bild richtig gedruckt, die Ecken aber rosa gezeichnet. Was ein Teufelskreis......!!!!

Ich hoffe nur, dass es da einen Ausweg gibt...

Gruß, Moony

[edit=SirThornberry]Beiträge zusammengeführt - nächstes mal bitte die Edit-Funktion verwenden - Mfg, SirThornberry[/edit]
[edit=sakura] Zeilenumbrüche ermöglicht... Mfg, sakura[/edit]
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat