Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.15;
Скачать: CL | DM;

Вниз

Плавный переход   Найти похожие ветки 

 
antonn ©   (2009-01-25 16:29) [40]

Тут неправильный подход.
Нужно не в цикле рисовать 255 картинок, ожидая пока все "продавит", а таймером с малой задержкой рисовать лишь часть кадров (ну как выше сказано штук 30). Тогда анимация будет одинаково длиться по времени на любых компьютерах (исключая древноту типа P166, разумеется)


 
CodeMaster ©   (2009-01-25 16:49) [41]

Вот ещё один вопрос у меня эффект морфинга используется при наведении на кнопку. Но когда идёт морфинг и я навожу курсор на другую кнопку с ней морфинга не происходит. Ожидается когда закончится морфинг с предыдущей кнопкой, а потом уже начинается морфинг с кнопкой на которую я навёл курсор.
Можно ли это исправить?


 
CodeMaster ©   (2009-01-25 16:50) [42]

Вот код на вхождение в кнопку:
var

Bm1,Bm2: TBitmap;

i: Integer;
x,y: Integer;
begin

  Bm1:= TBitmap.Create;
  Bm2:= TBitmap.Create;
  Bm1.Width:= FrameWidth;
  BM2.Width:= FrameWidth;
  Bm1.Height:= FrameHeight;
  Bm2.Height:= FrameHeight;

if Clicked then begin

BitBlt(Bm1.Canvas.Handle,0,0,FrameWidth,FrameHeight,BackBitmap.Canvas.Handle,Fra meWidth * (FrameCount div 2),0,SRCCOPY);
 BitBlt(Bm2.Canvas.Handle,0,0,FrameWidth,FrameHeight,BackBitmap.Canvas.handle,Fra meWidth * ((FrameCount div 2) + 1),0,SRCCOPY);
end
else begin
BitBlt(Bm1.Canvas.Handle,0,0,FrameWidth,FrameHeight,BackBitmap.Canvas.Handle,0,0 ,SRCCOPY);
 BitBlt(Bm2.Canvas.Handle,0,0,FrameWidth,FrameHeight,BackBitmap.Canvas.handle,Fra meWidth,0,SRCCOPY);
end;

  Morphing(bm1,Bm2);

 Bm1.Destroy;
 Bm2.Destroy;

   inherited;

end;


 
antonn ©   (2009-01-25 18:54) [43]

вот глянь пример - http://desksoft.ru/index.php?downloads=attachments&id=136
сильно тормозит? у меня - никак, код твой :)
параметры "быстродействия" подкручиваются в функции OnDraw_out (в ней в примере рисуется всего 10 кадров из 255) и интервалом срабатывания таймера (свой юзется потому, что он точнее TTimer).

Конечно для каждого объекта должен быть свой таймер, move_pos и bt_progress, чтобы они независимо работали.

По самой реализации - можно еще рисовать картинку с альфаканалом с переменной прозрачностью, а не просто перерисовывать полностью бекграунд кнопки. Такой подход дает возможным сделать группированые кнопки сложной формы, тогда перерисовка соседней кнопки не будет портить окружающие с пересекающимся бэкграундом. Это более ресурсоемко (хотя где уж тут емкость, все быстро отрабатывает), но позволяет строить интерфейс в более широких рамках.


 
antonn ©   (2009-01-25 19:01) [44]

а сам пример вывода полупрозрачной картинки с определенной прозрачностью ( :) ) есть тут - http://desksoft.ru/index.php?forum=13&th=187&page=1
там на битмап рисуются иконки с альфаканалом, он позволяет рисовать почти в любом месте картинки "в тему", привязки к заднику нет. Таким образом нужен общий бэкграунд и несколько таких кнопок, они могут быть совсем рядом и пересекаться, при этом "активироваться" сразу несколько и не перетирают друг друга при перерисовке (в отличии от скинов плеера, где элементы расположены так, что не пересекаются).


 
codemaster ©   (2009-01-26 11:00) [45]

Всем большое спасибо за помощь



Страницы: 1 2 вся ветка

Текущий архив: 2009.03.15;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.017 c
2-1233142319
istok
2009-01-28 14:31
2009.03.15
D2009...


15-1231502113
разбирающийся
2009-01-09 14:55
2009.03.15
карта израиля и палестины


3-1216371039
webpauk
2008-07-18 12:50
2009.03.15
Транзакции и параметры


2-1231221228
123-ий
2009-01-06 08:53
2009.03.15
Присваивание значения булевой переменной


2-1233048701
Golden
2009-01-27 12:31
2009.03.15
Подскажите, что выполняет данная функция?