Ребята, подскажите плз! Не могу сообразить, как в GDI+ можно избежать мерцания, при выводе на экран? В обычной GDI всё очень просто: с помощью блиттинга (BitBlt), ...
В структуре, которая передается в RegisterClassEx, есть член style, в нем есть флаги, которые отвечают за перерисовку окна
Rustem CS_WREDRAW, CS_HREDRAW? Наверно, ты имеешь ввиду стили перерисовки окна при изменении размеров по вертикали и по горизонтали: CS_HREDRAW or CS_VREDRAW... А если, я заставляю перерисовать окно не при изменении размера, а, например, при перемещении мыши по окну? Что тогда? Мне почему-то кажется, что нужно что-то выключить, а потом включить. Или рисовать в памяти (CompatibleDC, CompatibleBitmap, ...), как в обычной GDI... Но как это делается в GDI+ я не догоняю
Vasil Можно рисовать без мерцания и прямо на экран, если хорошо понимать из-за чего происходит мерцание. В противном случае, спасает двойной буфер. Погугли по GDI+ flicker double buffer. Есть несколько рабочих методов.
Да, нашёл GDI+ flicker double buffer http://rsdn.ru/article/gdi/gdiplus2mag.xml#ETIAE ЗЫ: Жаль, что ни на асме, - не удобно копаться в SDK по GDI+ )
Vasil Тут Rustem дал правильное направление при регистрации класса: mov [wc.hbrBackground], 0 иначе винда сначала сама заливает окно Backgroundом, а только потом передаёт тебе возможность рисовать, так что никакие буферизации от этого не лечат ))