AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Auf Canvas zeichnen, wenn PNG
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Canvas zeichnen, wenn PNG

Ein Thema von Jazzman_Marburg · begonnen am 8. Mai 2011 · letzter Beitrag vom 8. Mai 2011
Antwort Antwort
Seite 1 von 2  1 2      
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 14:48
Du musst das PNG erst auf ein Bitmap kopieren, zum Speichern umgekehrt:
Delphi-Quellcode:
var
  Bmp: TBitmap;
  Png: TPNGObject;
begin
  Bmp := nil;
  Png := nil;
  try
    Bmp := TBitmap.Create;
    Bmp.Assign(myImage.Picture.Graphic);
    Bmp.Canvas.…(…);

    Png := TPNGObject.Create;
    Png.Assign(Bmp);
    Png.SaveToFile(…);
  finally
    Bmp.Free;
    Png.Free;
  end;
end;

Geändert von Namenloser ( 8. Mai 2011 um 16:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#2

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 14:57
Du musst das PNG erst auf ein Bitmap kopieren, zum Speichern umgekehrt:
Delphi-Quellcode:
var
  Bmp: TBitmap;
  Png: TPNGObject;
begin
  Bmp := nil;
  Png := nil;
  try
    Bmp := TBitmap.Create;
    Bmp.Assign(myImage.Picture.Graphic);
    Bmp.Canvas.…(…);

    Png := TPNGImage.Create;
    Png.Assign(Bmp);
    Png.SaveToFile(…);
  finally
    Bmp.Free;
    Png.Free;
  end;
end;
Super - vielen Dank!

Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#3

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 15:13
Du musst das PNG erst auf ein Bitmap kopieren, zum Speichern umgekehrt...
Das ist nicht korrekt.
Folgendes Beispiel funktioniert ohne Probleme:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Picture.LoadFromFile('xxx.png');
  with TPNGImage(Image1.Picture.Graphic) do
  begin
    Canvas.Brush.Color:=clRed;
    Canvas.Rectangle(10,10,50,50);
  end;
  Image1.Refresh;
end;
Wer's nicht glaubt: Ich kann die Demo gern anhängen...
Welche PNGImage-Version verwendest Du?
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 15:21
Du musst das PNG erst auf ein Bitmap kopieren, zum Speichern umgekehrt...
Das ist nicht korrekt.
Folgendes Beispiel funktioniert ohne Probleme:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Picture.LoadFromFile('xxx.png');
  with TPNGImage(Image1.Picture.Graphic) do
  begin
    Canvas.Brush.Color:=clRed;
    Canvas.Rectangle(10,10,50,50);
  end;
  Image1.Refresh;
end;
Wer's nicht glaubt: Ich kann die Demo gern anhängen...
Welche PNGImage-Version verwendest Du?
Vor allem sollte man bedenken das bei den konvertieren der Alpha Channel verloren geht.
Oder?

gruss
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#5

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 15:24
Genau - das kommt auch noch als "Nebeneffekt" hinzu!
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 15:39
Genau - das kommt auch noch als "Nebeneffekt" hinzu!
Und dann macht es keinen Sinn mehr ein PNG einzuladen und darauf zu zeichnen.
Wenn es erst konvertiert werden muss.

gruss
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 15:42
Du musst das PNG erst auf ein Bitmap kopieren, zum Speichern umgekehrt...
Das ist nicht korrekt.
Folgendes Beispiel funktioniert ohne Probleme:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Picture.LoadFromFile('xxx.png');
  with TPNGImage(Image1.Picture.Graphic) do
  begin
    Canvas.Brush.Color:=clRed;
    Canvas.Rectangle(10,10,50,50);
  end;
  Image1.Refresh;
end;
Wer's nicht glaubt: Ich kann die Demo gern anhängen...
Welche PNGImage-Version verwendest Du?
Hmm, vielleicht funktioniert das unter XE, früher (bei der OpenSource-Version) war TPNGObject.Canvas AFAIR Read-Only.
Inwiefern beim Kopieren der Alpha-Channel erhalten bleibt, weiß ich nicht sicher, aber prinzipiell hätte ein 32Bit-Bitmap Platz dafür.

Ich nutze für die Bearbeitung von PNGs aber eh immer Graphics32 mit der GR32_PNG-Unit...
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 15:47
Zitat:
Inwiefern beim Kopieren der Alpha-Channel erhalten bleibt, weiß ich nicht sicher, aber prinzipiell hätte ein 32Bit-Bitmap Platz dafür.
Starte mal ein Paint Programm ala PhotoShop
Konvertiere ein PNG nach Bitmap und siehe was dann vom alpha Channel noch übrigbleibt.

Ein Weißer Hintergrund mehr nicht... die Transparenz wird komplett entfernt.

gruss
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 15:50
Zitat:
Inwiefern beim Kopieren der Alpha-Channel erhalten bleibt, weiß ich nicht sicher, aber prinzipiell hätte ein 32Bit-Bitmap Platz dafür.
Starte mal ein Paint Programm ala PhotoShop
Konvertiere ein PNG nach Bitmap und siehe was dann vom alpha Channel noch übrigbleibt.

Ein Weißer Hintergrund mehr nicht... die Transparenz wird komplett entfernt.
Und was hat Photoshop mit Delphi zu tun?
Ich habe schon mit ganz normalen Bitmaps mit Alphachannel gearbeitet... war überhaupt kein Problem. Du darfst nur nicht die veralteten GDI-Routinen zum Zeichnen nutzen.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: Auf Canvas zeichnen, wenn PNG

  Alt 8. Mai 2011, 15:56
Zitat:
Inwiefern beim Kopieren der Alpha-Channel erhalten bleibt, weiß ich nicht sicher, aber prinzipiell hätte ein 32Bit-Bitmap Platz dafür.
Starte mal ein Paint Programm ala PhotoShop
Konvertiere ein PNG nach Bitmap und siehe was dann vom alpha Channel noch übrigbleibt.

Ein Weißer Hintergrund mehr nicht... die Transparenz wird komplett entfernt.
Und was hat Photoshop mit Delphi zu tun?
Ich habe schon mit ganz normalen Bitmaps mit Alphachannel gearbeitet... war überhaupt kein Problem. Du darfst nur nicht die veralteten GDI-Routinen zum Zeichnen nutzen.
Kein Problem solange du es nicht von einem zum anderen konvertierst.
Teste es doch ganz einfach

gruss
  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 06:42 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