Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Gif-анимация


Автор: DelphianOracle 20.11.2007, 15:23
Сделал я анимацию с помощью этого самого gifimaged7c. Но появилась проблема - при движении Image по другому рисунку прозрачность первого сильно тормозит - показывается то, что было на этом месте секунды 2 назад.
doublebufered на true поставил - не помогает ни капли.
что делать?

Автор: Alexeis 20.11.2007, 20:53
DelphianOracle, советую посадить имагу на панельку и перемещать панель, а не TImage.

Автор: DelphianOracle 21.11.2007, 14:19
А как быть тогда с прозрачностью?
ведь панелька непрозрачна?

Автор: Alexeis 21.11.2007, 14:35
  А ну да. Тогда остается забить на перемещение самого TImage и каждый раз рисовать содержимое gifimage на нижнем рисунке при перемещении.

Автор: DelphianOracle 21.11.2007, 15:00
пробовал, но  smile и smile 
 smile 

Автор: Alexeis 21.11.2007, 15:08
Че не так
1) Достаем фон из битмапки
2) Рисуем его на имаге
3) вычисляем положение верхней картинки
4) Рисуем ее на имаге
5) Радуемся smile 

Что конкретно не получается?

Автор: DelphianOracle 21.11.2007, 15:24
Код

   fscreen.Canvas.Draw(0,0,fon.Picture.Graphic);
   inc(a,10);
   fscreen.Canvas.Draw(a,0,image1.Picture.Graphic);

та же проблема... smile 

Автор: Alexeis 21.11.2007, 15:27
Тогда последний шаг. Рисуем все не на имаге, а на битмапке, а битмапку уже рисуем на канве контрола в OnPaint.

Автор: DelphianOracle 21.11.2007, 15:37
Цитата(Alexeis @  21.11.2007,  15:27 Найти цитируемый пост)
Рисуем все не на имаге, а на битмапке, а битмапку уже рисуем на канве контрола в OnPaint.

что за битмапка и как на ней рисовать?

Автор: Alexeis 21.11.2007, 15:39
Цитата(DelphianOracle @  21.11.2007,  15:37 Найти цитируемый пост)
что за битмапка и как на ней рисовать? 

класс TBitmap у него есть канва Canvas. По сути невидимая канва.

Добавлено через 22 секунды
Наследник TGraphic

Автор: DelphianOracle 21.11.2007, 15:50
Код

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   fscreen.Picture.Bitmap.Canvas.Draw(0,0,fon.Picture.Graphic);
   inc(a,5);
   fscreen.Picture.Bitmap.Canvas.Draw(a,0,image1.Picture.Graphic);
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
   paintbox1.Canvas.Draw(0,0,TGraphic(fscreen.Picture.Bitmap));
end;


ничего не рисует... :( что не так? 

Автор: VICTAR 22.11.2007, 14:31
Код

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   fscreen.Picture.Bitmap.Canvas.Draw(0,0,fon.Picture.Graphic);
   inc(a,5);
   fscreen.Picture.Bitmap.Canvas.Draw(a,0,image1.Picture.Graphic);
   PaintBox1.Refresh;
end;

Автор: DelphianOracle 25.11.2007, 13:36
Не помогло :(. пришлось обходиться без Gif анимации...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)