![]() |
Auf Canvas zeichnen, wenn PNG
Hallo Gemeinde,
ich habe mit (Delphi XE) myImage.Picture.LoadFromFile('Grafik.PNG') ein PNG-File geladen und versuche nun auf das gleiche Canvas ein myImage.Canvas.Rectangle(myRect) aber da bekomme ich einen Fehler: EInvalidOpeartion: Ein Bild kann nur geändert werden, wenn es ein Bitmap enthält. Klar ein PNG ist kein Bitmap, aber kann ich dann garnicht auf das Canvas zeichnen? Muß das Ding irgendwie konvertiert werden (das veränderte PNG würde ich aber anschließend wieder gern als PNG speichern)? Die Delphi-Hilfe sagt folgendes zu TPngImage:
Delphi-Quellcode:
Aber ich verstehe den Hinweis auf TPngImage nicht -- Auf der Form habe ich ja nur das TImage, und dort habe ich das PNG-File mit LoadFromFile geladen.
procedure Draw(ACanvas: TCanvas; const Rect: TRect);
Draws the png image on a canvas. Call Draw to draw the png image on a canvas. Draw considers transparency options when drawing the image, but ignores pixel information. Hat jemand wohl eine Idee, wie aich auf das Canvas des TImage malen kann, wenn es zuvor ein PNG geladen hat? Vielen Dank im voraus Gruß Jazzman |
AW: Auf Canvas zeichnen, wenn PNG
TPNGImage(Image.Picure.Graphic).Canvas.xxx :gruebel:
|
AW: Auf Canvas zeichnen, wenn PNG
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; |
AW: Auf Canvas zeichnen, wenn PNG
Zitat:
Jazzman |
AW: Auf Canvas zeichnen, wenn PNG
Zitat:
Jazzman |
AW: Auf Canvas zeichnen, wenn PNG
Zitat:
Folgendes Beispiel funktioniert ohne Probleme:
Delphi-Quellcode:
Wer's nicht glaubt: Ich kann die Demo gern anhängen...
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; Welche PNGImage-Version verwendest Du? |
AW: Auf Canvas zeichnen, wenn PNG
Zitat:
Oder? gruss |
AW: Auf Canvas zeichnen, wenn PNG
Genau - das kommt auch noch als "Nebeneffekt" hinzu! :thumb:
|
AW: Auf Canvas zeichnen, wenn PNG
Zitat:
Wenn es erst konvertiert werden muss. gruss |
AW: Auf Canvas zeichnen, wenn PNG
Zitat:
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... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11: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 by Thomas Breitkreuz