![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Аналоговые часы
исследователь © (2007-08-18 18:14:00)Такой вопрос: пишу программку-прото аналоговые часики, для души, с поддержкой скинов. Есть красивые картинки скинов, но фон циферблата в них градиентный. Отсюда вопрос: как закрашивать стрелку по событию таймера так, чтобы не было ее видно, ведь ее нужно будет отрисовывать в другом месте.
исследователь (2007-08-20 16:16:00) [81]Может, ты подскажешь?
Я имел ввиду, как ты понял, не свой код, а нашел в инете.
antonn (2007-08-20 15:39:00) [82]
> Я нашел попиксельное решение, но даже с засовыванием в отделный
> тред прога просто виснет и все.
значит это не решение
Dib@zol (2007-08-20 14:32:00) [83]InvalidateRect(<Компонент на который выводишь>.Handle, nil, FALSE);
Это теоретически позволит избежать мерцания.
исследователь (2007-08-20 13:37:00) [84]Я нашел попиксельное решение, но даже с засовыванием в отделный тред прога просто виснет и все.
antonn (2007-08-19 21:17:00) [85]никаких StretchBlt, попиксельно через scanline со смешением цветов, а то науменьшаешь до "квадратиков":)
@!!ex (2007-08-19 20:55:00) [86]> [31] antonn © (19.08.07 20:48)
Я думаю мерцание из-за того, что форма перерисовываеться сама.
А насчет сглаживания, зачем уменьшать? Сразу рисовать с StretchBlt.
antonn (2007-08-19 20:48:00) [87]решение против мерцания - либо двойной буфер (кстати bltbtn очень быстро работает, с ним не должно быть мерцания), либо выводит окошко через updatelayeredwindow() - понятия мерцать там вообще нет (как и понятия контрол, хыхыхы).
рисовать гладкие линии - антиалиасинг. Простой метод - создавать битмап, в несколько раз больше "обычного", рисовать на нем все стрелки и фон так же в несколько раз больше, а потом в эти несколько раз уменьшать до размеров "обычного"
@!!ex (2007-08-19 17:40:00) [88]> Кстати, стала очень заметна рябь при использовании больших
> картинок.
Косяк связанный с тем, что при перерисовке сначала форма заливаеться родным цветом, а потом на нее уже ложиться BitBlt.
Из за этогО, елси например форма синяя, а копируеться белый битмап будет мерцание:
форма при перерисовке заливаеться синим, на нее накладываеться битмап, при перерисовке битмап стирается цветом формы и накладываеться опять.
решения есть, но я их точно не помню, а сейчас лезть искать код мне влом, поищи сам, тут где то не далеко это обсуждали.
исследователь (2007-08-19 14:46:00) [89]Да скин я сделал, а как сглаживание юзать?
Vendict (2007-08-19 12:34:00) [90]была здесь как-то подобная тема, советовали сглаживание использовать. а по поводу как вырезать дырки из формы, у Флёнова(не ругайте, знаю) был пример.
исследователь (2007-08-18 23:32:00) [91]Никто не знает?
исследователь (2007-08-18 21:38:00) [92]А как сделать линии плавными? В инете лишь дурацкий урок какой-то, но он не катит, а при изменении максимума x и у в нем на width и height формы она вообще не видна становится
исследователь (2007-08-18 21:34:00) [93]Да я уж проверил... все норм... а вот с мерцанием - это отстой.
antonn (2007-08-18 21:20:00) [94]копируй прямоугольные, форму вырезай непрямоугольную, в чем загвоздка?
исследователь (2007-08-18 20:59:00) [95]Кстати, стала очень заметна рябь при использовании больших картинок.
И еще: как теперь привязать к этому скины... копируем-то мы ПРЯМОУГОЛЬНЫЙ циферблат, а форма будет НЕПРЯМОУГОЛЬНАЯ...
исследователь (2007-08-18 20:59:00) [96]Кстати, стала очень заметна рябь при использовании больших картинок.
И еще: как теперь привязать к этому скины... копируем-то мы ПРЯМОУГОЛЬНЫЙ циферблат, а форма будет НЕПРЯМОУГОЛЬНАЯ...
Ricks (2007-08-18 20:49:00) [97]ты потратишь больше памяти на копирование непрямоугольной картинки...
исследователь (2007-08-18 20:41:00) [98]Нет, 2 гига, но все же...
antonn (2007-08-18 20:40:00) [99]у тебя памяти 16Мб?
исследователь (2007-08-18 20:18:00) [100]А вариант копировать только там, где стрелочка прорисовалась? Так и памяти жрать меньше будет