Хочешь чуда? Будь чудом!
Как обойти мерцание при анимации в С++?
Мне рассказывали, что нужно сначала прорисовать всё, что будет на канве, а потом только ее прорисовать. но я не совсем понимаю, как это именно сделать...
Поможете?

@темы: Вопрос, C++

Комментарии
21.11.2010 в 22:00

А где и чем вы рисуете?
Т.е. библиотеки, windows-linux?
21.11.2010 в 22:02

Хочешь чуда? Будь чудом!
ой - нет...
я рисую в C++ Builder на компоненте Image...
21.11.2010 в 22:42

тогда вряд ли подскажу, c++ builder не знаю.
21.11.2010 в 22:44

Хочешь чуда? Будь чудом!
Феаринг всё равно спасибо)
21.11.2010 в 23:27

I'm not dead... yet.
попробуйте свойство DoubleBuffered. а вообще для того чтобы убрать мерцание, нужно рисовать при помощи WinApi. т.е. можно создать TBitmap (или как там он в билдере называется), на нем картинку рисовать точно так же как на TImage (при помощи Canvas), но разница в том что Bitmap это не визуальный компонент и картинка будет находиться в памяти. А потом можно получить доступ к его HBITMAP (это хэндл на более низкоуровненвый объект, представляющий картинку), и выводить его на Image с помощью винапишной функции BitBlt. Это все довольно сложно, но если погуглить примеры и покурить мсдн, то вполне реально. Пример к сожалению дать не могу, ибо давно перешел на M$ Visual Studio и завязал с билдерами и дельфями.
Когда-то я делал на билдере двухмерную игрушку и графический движок для нее был построен именно на этом принципе, и работало довольно неплохо.
22.11.2010 в 20:45

капелюх чарiвника
добавлю к предыдущему оратору.
битмапов какбы два должно быть.
пока на одном битмапе рисуем, другой выводим на экран. так как выводим целиком, то времени тратится очень мало и мерцания не будет.

а ещё можно повозиться с сообщением WM_SETREDRAW и функцией ::ValidateRect.
22.11.2010 в 22:14

Хочешь чуда? Будь чудом!
Just-a-Shadow mistificator спасибо)
теперь знаю в каком направлении копаться)