Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - [TImage / TGifimage] Problem mit Canvas bei Gif-Datei


Henry - Do 24.01.08 14:32
Titel: [TImage / TGifimage] Problem mit Canvas bei Gif-Datei
Hallo,

ich programmiere gerade an einem Programm, bei dem ich auf einem TImage(TGifImage) markierungen an bestimmten Punkten setzen möchte. Die Grafik wird dann als JPG gespeichert.
Zur Zeit mache ich das wie folgt:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
//Grafik in das Image laden (*.bmp)
 Image1.Picture.LoadFromFile(ExtractFilePath(paramstr(0)) + 'zubehör/Grafikdatei.bmp');

//Markierungen auf dem Canvas des Image setzen
 ...
 Image1.Canvas.Brush.Color := CLSilver;
 Image1.Canvas.Ellipse(XPos1, YPos1, XPos2, YPos2);
 ...

//Veranderte Datei als JPG speichern

Procedure SaveImageJPG(grafik:TImage);
VAR Dateiname : String;
    Jp        : TJpegImage;
begin
       If (InputQuery('Dateiname','Geben sie einen Dateinamen ein!',Dateiname))
        and not (Dateiname = '')Then
         Begin
          Jp := TJpegImage.Create;
         Try
          With Jp do
           Begin
            Assign(grafik.Picture.Bitmap);
            CompressionQuality := 100;
            SaveToFile('e:\' + Dateiname +'.jpg');
           End//With
           Finally
            jp.free;
           End//Finally
       end  //If
          Else
           Showmessage('Speichervorgang wurde durch Benutzer abgebrochen,'+
                       #13 + 'oder es Wurde kein Dateiname eingegeben!');

end;


So funktioniert das einwandfrei.
Nun habe ich aber vor die Grafik nicht als *.bmp Datei zu laden sondern als *.gif, da ich bestimmte Bereiche der Grafick tranparent haben möchte.
Lade ich nun die *.gif Datei in das Image, wird diese einwandfrei geladen und angezeigt.
Versuche ich aber mit den oben genannten Befehlen auf das Canvas zu zeichnen, bekomme ich die Meldung das dies nur auf einem Bitmap möglich sei.
Speichern als *.jpg kann ich die Grafik mit meiner Procedure auch nicht mehr.

Wie müßte ich vorgehen, wenn ich auf dem Canvas des Image zeichnen möchte bei geladener *.gif Datei und dies dann als JPG speichern?

Danke schon einmal im Voraus für die Hilfe