![]() |
Bitmap drucken erzeugt nur ein weißes Blatt
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:
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...
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; Gruss Christof |
AW: Bitmap drucken erzeugt nur ein weißes Blatt
Funktioniert der Quelltext generell oder ist das der Quelltext der nicht immer funktioniert?
Ich vermute mal das ist der Quelltext der immer funktioniert. Dir jetzt zusagen warum mit deinem anderen Quelltext das ganze nicht immer funktioniert fällt natürlich schwer wenn man den Quelltext nicht kennt. Ich vermutet du verwendest StretchBlt oder BitBlt in deinem anderen Quelltext anstelle von Stretchdibits |
AW: Bitmap drucken erzeugt nur ein weißes Blatt
Achso :-D
der obige Code funktioniert. Mein Versuch ist mit Printer.Canvas.StretchDraw(); gescheitert (aus bei einem PDF Drucker) |
AW: Bitmap drucken erzeugt nur ein weißes Blatt
Dann sollte meine Begründung stimmen. Es liegt am Stretchdraw.
|
AW: Bitmap drucken erzeugt nur ein weißes Blatt
Zitat:
Mit Draw hat es auch nicht funktioniert, und das habe ich aus diesem Tipp: ![]() |
AW: Bitmap drucken erzeugt nur ein weißes Blatt
Weil das zeichnen von StretchBlt und BitBlt (was intern verwendet wird) nicht für Drucker geeignet ist. Deswegen verwendet man StretchDIBits
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:01 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