Форум: "Начинающим";
Текущий архив: 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