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