![]() |
png transparent drucken
Mit canvas.StretchDraw male ich ein transparentes png, jedoch wird der Hintergrund schwarz dargestellt.
Warum? Habe bereits alles mögliche ausprobiert. Z.B. TPNGImage.Draw, auch verschiedene andere png's. |
AW: png transparent drucken
Kenne das Problem zwar nicht, aber keine Farbe ist erst einmal Schwarz, da Wert 0 für schwarz steht. Evtl. solltest transparent gegen weiß tauschen oder die Png auf ein weißes Feld legen.
|
AW: png transparent drucken
Wie kann ich zur Laufzeit in einem tranparenten png einen weißen Hintergrund einziehen?
|
AW: png transparent drucken
Die Komponente kann mit transparenten PNGs umgehen:
![]() |
AW: png transparent drucken
Ich würds mal so versuchen
Delphi-Quellcode:
Gruß,
Canvas.Brush.Color:=clWhite;
Canvas.Rectangle(0, 0, Width, Height); Toni |
AW: png transparent drucken
Hallo Toni, bei Deinem Vorschlag wird die angegebene Fläche weiß gemalt.
Hallo schlagzu, ich setze Delphi XE ein und das TPNGImage kann mit Alphakanälen umgehen. Da ich selbst bei anderen Projekten Graphic32 einsetze habe ich versucht die GR32 PNG library zu installieren, was mir aber kurzfristig noch nicht gelungen ist. Wenn ich vor dem StretchDraw ein (ImageLogo1.Picture.Graphic as TPNGImage).RemoveTransparency; setze, dann ist der Hintergrund nicht mehr schwarz, jedoch ist der Vordergrund, also das Bild um welches mir geht, verschmiert. |
AW: png transparent drucken
Hallo,
ich kann mit
Delphi-Quellcode:
prima ein transparentes PNG auf das Form-Canvas zeichnen. Wo willst Du eigentlich zeichnen?
procedure TForm1.FormCreate(Sender: TObject);
begin Image1.Picture.LoadFromFile ('D:\Program Files (x86)\Embarcadero\RAD Studio\10.0\Images\GlyFX\glyFX\glyFX\Icons\Aero\PNG\256x256\arrow_left_256.png'); end; procedure TForm1.FormDblClick(Sender: TObject); begin Canvas.Draw (0, 0, Image1.Picture.Graphic) // oder auch mit StrechDraw end; Gruß |
AW: png transparent drucken
Auf den Drucker (printer.Canvas) will ich das transparente png ausgeben. Die Ausgabe auf den Bildschirm ist kein Problem.
|
AW: png transparent drucken
Hallo,
Delphi-Quellcode:
Klappt bei mir.
procedure TForm1.Button1Click(Sender: TObject);
var b : TBitmap; begin b := TBitmap.Create; try b.Assign (Image1.Picture.Graphic); Printer.BeginDoc; Printer.Canvas.Draw (0, 0, b); Printer.Canvas.StretchDraw (Rect (80, 0, 180, 100), b) finally Printer.EndDoc; FreeAndNil (b) end end; // Über den Objektinspektor noch die Eigenschaft Image1.Transparent := True setzen Gruß |
AW: png transparent drucken
Hallo Volker,
Deine Lösung funktioniert noch nicht ganz. Berücksichtigt man noch den Tipp von Toni, dann kommt folgende funktionierende Lösung raus:
Delphi-Quellcode:
var
b: TBitmap; begin Image1.Transparent:= true; Image1.Picture.LoadFromFile('TestBild.PNG'); b:= TBitmap.Create; b.Transparent:= false; b.Canvas.Brush.Color:= clWhite; b.Canvas.Rectangle(0, 0, Image1.Picture.Graphic.Width, Image1.Picture.Graphic.Height); try b.Assign(Image1.Picture.Graphic); printer.BeginDoc; Printer.Canvas.Draw(20, 20, b); // Printer.Canvas.StretchDraw((Rect(20, 1000, Image1.Picture.Graphic.Width*2, Image1.Picture.Graphic.Height*2), b) finally FreeAndNil(b); printer.EndDoc; end; |
AW: png transparent drucken
Hallo,
es tut mir leid aber ich kann es jetzt nicht nachvollziehen warum erst ein Rechteck auf dem Canvas der Bitmap gezeichnet werden soll/muss und dabei Brush.Color clWhite sein sollte.
Delphi-Quellcode:
Anschließend das Bitmap mittels Assign sowieso "überschrieben" wird.
b.Transparent:= false;
b.Canvas.Brush.Color:= clWhite; b.Canvas.Rectangle(0, 0, Image1.Picture.Graphic.Width, Image1.Picture.Graphic.Height); // Rectangle zeichnet meines Wissens über die Eigenschaft Pen nicht Brush
Delphi-Quellcode:
b.Assign (Image1.Picture.Graphic);
Delphi-Quellcode:
Funktioniert bei mir tadellos (ich habe die Eigenschaft Transparent der TImage-Komponente über den Objektinpektor auf True gesetzt). An ein Druckertreiberproblem möchte ich jetzt nicht glauben.
procedure TForm1.Button1Click(Sender: TObject);
var b : TBitmap; begin Image1.Picture.LoadFromFile ('D:\Program Files (x86)\Embarcadero\RAD Studio\10.0\Images\GlyFX\glyFX\glyFX\Icons\Aero\PNG\256x256\arrow_left_256.png'); b := TBitmap.Create; try b.Assign (Image1.Picture.Graphic); Printer.BeginDoc; Printer.Canvas.Draw (20, 20, b); finally FreeAndNil (b); Printer.EndDoc end end; Gruß |
AW: png transparent drucken
Heute morgen funktioniert Dein Lösungsvorschlag.
Schon komisch was sich über Nacht so alles ändern kann! |
AW: png transparent drucken
Hallo Volker,
heute morgen ging Deine Routine wieder nicht. In der Tat hängt es vom Drucker ab. Z.B. funktionert es auf den pdf-Drucker eDocPrintPro 3.17.7, aber nicht auf den pdf-Drucker pdf-Factory 4. png funktioniert nicht auf allen Druckern:
Delphi-Quellcode:
jpg funktioniert:
lPNG:= TPngImage.Create;
lPNG.LoadFromFile(ProgrammOrdner + 'Logo.png'); b:= TBitmap.Create; try b.Assign(lPNG); printer.Canvas.StretchDraw(20, 20, 2500, 2500, b); finally FreeAndNil(b); FreeAndNil(lPNG); end;
Delphi-Quellcode:
jpg funktioniert:
lJPG:= TJPEGImage.Create;
lJPG.LoadFromFile(ProgrammOrdner + 'Logo.jpg'); b:= TBitmap.Create; try b.Assign(lJPG); printer.Canvas.StretchDraw(20, 20, 2500, 2500, b); finally FreeAndNil(b); FreeAndNil(lJPG); end;
Delphi-Quellcode:
lJPG:= TJPEGImage.Create;
lJPG.LoadFromFile(ProgrammOrdner + 'Logo.jpg'); try printer.Canvas.StretchDraw(20, 20, 2500, 2500, lJPG); finally FreeAndNil(lJPG); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:12 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