Einzelnen Beitrag anzeigen

tofse

Registriert seit: 6. Jun 2011
Ort: Saarlouis
131 Beiträge
 
Delphi XE Professional
 
#1

Bitmap drucken erzeugt nur ein weißes Blatt

  Alt 3. Mai 2012, 11:42
Hallo,

ich versuche, ein Bitmap zu drucken. Im PDFCreator klappt das, aber sobald ich einen anderen Drucker auswähle, kommt nur ein weißes Blatt raus
Im Forum habe ich diese Lösung gefunden:
Code:
procedure PrintBitmap(aCanvas: TCanvas; Dest: TRect; Bitmap: TBitmap);
var Info: PBitmapInfo;
    InfoSize: DWord;
    Image: Pointer;
    ImageSize: DWord;
begin
  with Bitmap do
  begin
    GetDIBSizes(Handle, InfoSize, ImageSize);
    Info := AllocMem(InfoSize);
    try
      Image := AllocMem(ImageSize);
      try
        GetDIB(Handle, Palette, Info^, Image^);
        if not Monochrome then
          SetStretchBltMode(ACanvas.Handle, STRETCH_DELETESCANS);
        with Info^.bmiHeader do
          StretchDIBits(aCanvas.Handle, Dest.Left, Dest.Top,
            Dest.RIght - Dest.Left, Dest.Bottom - Dest.Top,
            0, 0, biWidth, biHeight, Image, Info^, DIB_RGB_COLORS, SRCCOPY);
      finally
        FreeMem(Image, ImageSize);
      end;
    finally
      FreeMem(Info, InfoSize);
    end;
  end;
end;
Damit funktioniert es, aber ich würde gerne verstehen, wo das Problem liegt. Bei uns im Haus gibt es doch viele verschiedene Druckermodelle, und da möchte ich mich schon auf eine Lösung verlassen können, ohne jeden Drucker auszutesten...

Gruss
Christof
  Mit Zitat antworten Zitat