AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi png transparent drucken
Thema durchsuchen
Ansicht
Themen-Optionen

png transparent drucken

Ein Thema von Pfaffe · begonnen am 3. Jan 2013 · letzter Beitrag vom 7. Jan 2013
Antwort Antwort
Seite 1 von 2  1 2      
Pfaffe

Registriert seit: 29. Jan 2009
294 Beiträge
 
Delphi 12 Athens
 
#1

png transparent drucken

  Alt 3. Jan 2013, 16:01
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.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: png transparent drucken

  Alt 3. Jan 2013, 16:20
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.
  Mit Zitat antworten Zitat
Pfaffe

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

AW: png transparent drucken

  Alt 4. Jan 2013, 09:33
Wie kann ich zur Laufzeit in einem tranparenten png einen weißen Hintergrund einziehen?
  Mit Zitat antworten Zitat
schlagzu

Registriert seit: 11. Okt 2010
86 Beiträge
 
Delphi XE Starter
 
#4

AW: png transparent drucken

  Alt 4. Jan 2013, 09:46
Die Komponente kann mit transparenten PNGs umgehen: http://sourceforge.net/projects/graphics32/
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#5

AW: png transparent drucken

  Alt 4. Jan 2013, 09:47
Ich würds mal so versuchen

Delphi-Quellcode:
  Canvas.Brush.Color:=clWhite;
  Canvas.Rectangle(0, 0, Width, Height);
Gruß,

Toni
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Pfaffe

Registriert seit: 29. Jan 2009
294 Beiträge
 
Delphi 12 Athens
 
#6

AW: png transparent drucken

  Alt 4. Jan 2013, 15:37
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.
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#7

AW: png transparent drucken

  Alt 5. Jan 2013, 00:17
Hallo,

ich kann mit

Delphi-Quellcode:
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;
prima ein transparentes PNG auf das Form-Canvas zeichnen. Wo willst Du eigentlich zeichnen?

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Pfaffe

Registriert seit: 29. Jan 2009
294 Beiträge
 
Delphi 12 Athens
 
#8

AW: png transparent drucken

  Alt 5. Jan 2013, 11:48
Auf den Drucker (printer.Canvas) will ich das transparente png ausgeben. Die Ausgabe auf den Bildschirm ist kein Problem.
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#9

AW: png transparent drucken

  Alt 5. Jan 2013, 21:34
Hallo,

Delphi-Quellcode:
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
Klappt bei mir.

Gruß
Volker Zeller

Geändert von Volker Z. ( 5. Jan 2013 um 22:30 Uhr) Grund: Code-Fehler entfernt
  Mit Zitat antworten Zitat
Pfaffe

Registriert seit: 29. Jan 2009
294 Beiträge
 
Delphi 12 Athens
 
#10

AW: png transparent drucken

  Alt 5. Jan 2013, 23:29
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz