![]() |
PngDelphi - Transparent wird schwarz gedruckt.
Hi,
wer von euch nutzt die Komponente ![]() Ich stoße damit grade auf einen eigenartigen Fehler. Wenn ich eine PNG-Grafik mit transparenten Bereichen lade, wird diese korrekt auf dem Bildschirm-Canvas gezeichnet. Aber wenn ich den Printer-Canvas benutze, dann werden die transparenten Stellen schwarz gezeichnet. Hatt jemand eine Idee, woran das liegen könnte? |
AW: PngDelphi - Transparent wird schwarz gedruckt.
Hallo,
printer.canvas ist so eine Sache. Das Teil zickt und ist auch nicht gedacht so angesteuert zu werden wie ein Bildschirm. Hast du einen Brocken Code für mich? Gruß Matthias |
AW: PngDelphi - Transparent wird schwarz gedruckt.
Ich kenne das Problem und gehe davon aus, dass es sich um Druckertreiberbugs handelt. Es hat nichts mit pngDelphi zu tun. Meine prakmatische Lösung: Für den Ausdruck ein Bild mit weißem Hintergrund verwenden.
|
AW: PngDelphi - Transparent wird schwarz gedruckt.
Zitat:
@bernau: Eine andere Möglichkeit wäre, statt die Ausgabe auf den Printer.Canvas zu zeichnen, alles in eine Puffer-Bmp zu zeichnen und diese dann an den Drucker zu schicken. |
AW: PngDelphi - Transparent wird schwarz gedruckt.
vieleicht hilft das
Code:
PROCEDURE PrintBitmap(Canvas: TCanvas; DestRect: TRect; Bitmap: TBitmap);
VAR BitmapHeader: pBitmapInfo; BitmapImage: POINTER; HeaderSize: Cardinal; ImageSize : DWORD; BEGIN GetDIBSizes(Bitmap.Handle, HeaderSize, ImageSize); Bitmapheader := VirtualAlloc(nil, HeaderSize, MEM_COMMIT, PAGE_READWRITE); BitmapImage := VirtualAlloc(nil, ImageSize, MEM_COMMIT, PAGE_READWRITE); TRY GetDIB(Bitmap.Handle, Bitmap.Palette, BitmapHeader^, BitmapImage^); StretchDIBits(Canvas.Handle, DestRect.Left, DestRect.Top, // Destination Origin DestRect.Right - DestRect.Left, // Destination Width DestRect.Bottom - DestRect.Top, // Destination Height 0, 0, // Source Origin Bitmap.Width, Bitmap.Height, // Source Width & Height BitmapImage, TBitmapInfo(BitmapHeader^), DIB_RGB_COLORS, SRCCOPY) FINALLY VirtualFree(Bitmapheader, 0, MEM_FREE); VirtualFree(bitmapimage, 0, MEM_FREE); END END {PrintBitmap}; |
AW: PngDelphi - Transparent wird schwarz gedruckt.
Zitat:
|
AW: PngDelphi - Transparent wird schwarz gedruckt.
Ich habe das hinbekommen, in dem ich den Umweg über ein Windows-Metafile gehe. Allerdings verwende ich TdxPNGImage der Developer Express-Komponenten:
Delphi-Quellcode:
Vielleicht nützt Dir diese Anregung.
var
WMF: TMetafile; MC: TMetafileCanvas; PNGImage: TdxPNGImage; begin PNGImage := TdxPNGImage.Create; try PNGImage,LoadFromFile('C:\Temp\Test.png'); WMF := TMetafile.Create; try WMF.Width := 1000; WMF.Height := 1000; MC := TMetafileCanvas.Create(WMF, 0); try // Zeichen der PNG-Grafik MC.Draw(0,0,PNGImage); finally MC.Free; end; // Ausgabe auf Drucker Printer.Canvas.Draw(0,0,WMF); finally WMF.Free; end; finally PNGImage.Free; end; end; Noch was wichtiges: Oft hängt es vom Druckertreiber ab, ob Transparenzen überhaupt gerendert werden. Der Standard-Windows-Druckertreiber kann es oft nicht. Wir verwenden in solchen Fällen die PostScript-Treiber, sofern welche verfügbar sind. Gruß Remo |
AW: PngDelphi - Transparent wird schwarz gedruckt.
Zitat:
|
AW: PngDelphi - Transparent wird schwarz gedruckt.
Wenn dein Drucker zu irgendeinem HP-Drucker kompatibel ist, installier den passenden HP-Treiber und probiers damit.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:53 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