AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi PngDelphi - Transparent wird schwarz gedruckt.
Thema durchsuchen
Ansicht
Themen-Optionen

PngDelphi - Transparent wird schwarz gedruckt.

Ein Thema von bernau · begonnen am 23. Jun 2014 · letzter Beitrag vom 25. Jun 2014
Antwort Antwort
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.307 Beiträge
 
Delphi 12 Athens
 
#1

PngDelphi - Transparent wird schwarz gedruckt.

  Alt 23. Jun 2014, 14:21
Hi,

wer von euch nutzt die Komponente PngDelphi.

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?
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
483 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: PngDelphi - Transparent wird schwarz gedruckt.

  Alt 23. Jun 2014, 14:38
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
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Pfaffe

Registriert seit: 29. Jan 2009
297 Beiträge
 
Delphi 12 Athens
 
#3

AW: PngDelphi - Transparent wird schwarz gedruckt.

  Alt 23. Jun 2014, 14:55
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.
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: PngDelphi - Transparent wird schwarz gedruckt.

  Alt 23. Jun 2014, 15:11
Für den Ausdruck ein Bild mit weißem Hintergrund verwenden.
Das klappt nur solange, wie die Bilder nicht irgendwo drüberliegen.

@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.
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
483 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: PngDelphi - Transparent wird schwarz gedruckt.

  Alt 23. Jun 2014, 15:24
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};
Matthias
Das Leben ist eines der härtesten.

Geändert von matashen (23. Jun 2014 um 15:25 Uhr) Grund: formatierung
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.307 Beiträge
 
Delphi 12 Athens
 
#6

AW: PngDelphi - Transparent wird schwarz gedruckt.

  Alt 24. Jun 2014, 08:14
vieleicht hilft das
Nicht ganz. PngObject ist ja kein Bitmap und kann deiner Funktion somit nicht übergeben werden.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:00 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