c ++ перекрасить часть окна - PullRequest
0 голосов
/ 26 августа 2010

Я хочу перекрасить часть окна, а не все.я понятия не имею как.я использую win32, пожалуйста, не MFC ........
заранее спасибо

// create rect structure
RECT rect2;
rect2.left=0;
rect2.top=0;
rect2.right=225;
rect2.bottom=300;
// calling invalidateRect when left mouse button is donw
case WM_LBUTTONDOWN:
    InvalidateRect(hWnd, &rect2, false);
    break;

Ответы [ 4 ]

2 голосов
/ 26 августа 2010

Передайте прямоугольник части окна, которую вы хотите перекрасить, в методе InvalidateRect (). Подробнее см. здесь .

2 голосов
/ 26 августа 2010

Это для игрового движка? Похоже, так как вы беспокоитесь об использовании процессора при полной перерисовке.

Если это так, то я бы порекомендовал переместить изображение заднего буфера, отследить, какая часть вашего заднего буфера изменилась, и скопировать только эту часть на экран, когда вы закончите рендеринг. Это называется двойной буферизацией и также поможет устранить проблемы с мерцанием, которые могут возникнуть.

0 голосов
/ 26 августа 2010

Как указали другие ответы; при обработке WM_PAINT необходимо получить обновленный прямоугольник / регион и соответственно нарисовать / блик.

см
+ Сообщение WM_PAINT
+ Получение области обновления
+ Аннулирование и проверка области обновления
+ Синхронное и асинхронное рисование

0 голосов
/ 26 августа 2010

Что не так с RedrawWindow ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...