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 36 37 38
| procedure TGifAnim.Paint;
begin
if (not Empty) and Visible then
begin
if not (csDesigning in ComponentState) then
begin
if (FCurrentImage < GifBitmaps.Count) then
with GifBitmaps.Items[FCurrentImage] do
begin
BufferImg.Canvas.Brush.Color := (self.Color);
if FCurrentImage = 0 then
BufferImg.Canvas.FillRect(Rect(0, 0, Width, Height));
if Delay <> 0 then FWait.Interval := Delay * 10;
// BufferImg.Canvas.Draw(PosX, PosY, Bitmap); // ---> Ces 2 lignes doivent normalement se trouver après les méthodes d'effacement et non avant,
// CurrentView.Assign(BufferImg); // ce n'est pas logique de transférer le "Bitmap" dans "BufferImg" puis d'effacer une partie ou la totalité. "Method" fait référence à ce qui faut appliquer à l'image en cours et non à la prochaine il me semble
case Method of
//0 : Not specified...
//1 : No change Background
2: BufferImg.Canvas.FillRect(
Rect(PosX, PosY, Bitmap.Width + PosX, Bitmap.Height + PosY));
3: BufferImg.Canvas.FillRect(Rect(0, 0, Width, Height));
end;
BufferImg.Canvas.Draw(PosX, PosY, Bitmap); // Lignes replacées
CurrentView.Assign(BufferImg);
end;
end
else
begin
Canvas.Brush.Color := (self.Color);
Canvas.FillRect(Rect(0, 0, Width, Height));
end;
Canvas.Draw(0, 0, CurrentView);
end;
inherited Paint;
end; |
Partager