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
Pfaffe

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

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
 
#2

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
297 Beiträge
 
Delphi 12 Athens
 
#3

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
 
#4

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
297 Beiträge
 
Delphi 12 Athens
 
#5

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
Volker Z.

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

AW: png transparent drucken

  Alt 6. Jan 2013, 00:30
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:
   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
Anschließend das Bitmap mittels Assign sowieso "überschrieben" wird.
 b.Assign (Image1.Picture.Graphic);
Delphi-Quellcode:
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;
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.

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Pfaffe

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

AW: png transparent drucken

  Alt 6. Jan 2013, 09:40
Heute morgen funktioniert Dein Lösungsvorschlag.
Schon komisch was sich über Nacht so alles ändern kann!
  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 13:41 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