Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.03.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.047 c
3-1216356871
Zergost
2008-07-18 08:54
2009.03.15
Работа со связями в Delphi база MS SQL


15-1231874644
oxffff
2009-01-13 22:24
2009.03.15
Рекомендую. Copy-on-write data structures in Delphi


2-1232976086
Mishenka
2009-01-26 16:21
2009.03.15
Как сделать в ToolButtone кнопки разной ширины?


15-1231856375
Jeer
2009-01-13 17:19
2009.03.15
Кольцо сайтов "Научная книга" ?


2-1229976790
Чайник
2008-12-22 23:13
2009.03.15
Как отобразить ProgressBar в ОТДЕЛЬНОМ ОКНЕ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский