В окне приложения win32 рисую путь, заливаю градиентом (все с использованием cairo), при клике внутри контура заливаю другим градиентом.
При перезаливке происходит неприятное мерцание.
Ладно, списываю на отсутствие бэкбуфера, создаю его в формате CAIRO_FORMAT_ARGB32, рисую по нему, в конце метода перерисовки вызываю копирование его на экран. Мерцание только усиливается.
Как можно это победить? Как в кайре вообще избавиться от мерцания?
Здравствуйте, nosuchip, Вы писали:
N>В окне приложения win32 рисую путь, заливаю градиентом (все с использованием cairo), при клике внутри контура заливаю другим градиентом. N>При перезаливке происходит неприятное мерцание. N>Ладно, списываю на отсутствие бэкбуфера, создаю его в формате CAIRO_FORMAT_ARGB32, рисую по нему, в конце метода перерисовки вызываю копирование его на экран. Мерцание только усиливается. N>Как можно это победить? Как в кайре вообще избавиться от мерцания?
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, nosuchip, Вы писали:
N>>В окне приложения win32 рисую путь, заливаю градиентом (все с использованием cairo), при клике внутри контура заливаю другим градиентом. N>>При перезаливке происходит неприятное мерцание. N>>Ладно, списываю на отсутствие бэкбуфера, создаю его в формате CAIRO_FORMAT_ARGB32, рисую по нему, в конце метода перерисовки вызываю копирование его на экран. Мерцание только усиливается. N>>Как можно это победить? Как в кайре вообще избавиться от мерцания?
CS>WM_ERASEBKGND как-нибудь обрабатываешь?
На его месте заглушка стоит, просто забиваю на него и не пробрасываю в DefWndProc.
1. Заглушка на месте WM_ERASEBKGND
2. Использование бэкбуфера: cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height) и изменение его размера на WM_SIZING