Ponowne rysowanie w regionie aktualizacji
Ilość rysunku aplikacji można ograniczyć podczas przetwarzania komunikatu WM_PAINT, określając rozmiar i lokalizację regionu aktualizacji. Ponieważ system używa regionu aktualizacji podczas tworzenia regionu wycinków dla kontekstu urządzenia wyświetlania okna, możesz pośrednio określić region aktualizacji, sprawdzając region wycinków.
W poniższym przykładzie procedura okna rysuje trójkąt, prostokąt, pentagon i sześciokąt, ale tylko wtedy, gdy wszystkie lub część każdego rysunku leży w regionie aktualizacji. Procedura okna używa funkcji RectVisible i prostokąta o wymiarach 100 na 100 w celu określenia, czy rysunek znajduje się w regionie wycinkowania, a zatem i w regionie aktualizacji, dla wspólnego kontekstu urządzenia pobranego przez BeginPaint.
POINT aptTriangle[4] = {50,2, 98,86, 2,86, 50,2},
aptRectangle[5] = { 2,2, 98,2, 98,98, 2,98, 2,2},
aptPentagon[6] = {50,2, 98,35, 79,90, 21,90, 2,35, 50,2},
aptHexagon[7] = {50,2, 93,25, 93,75, 50,98, 7,75, 7,25, 50,2};
.
.
.
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
SetRect(&rc, 0, 0, 100, 100);
if (RectVisible(hdc, &rc))
Polyline(hdc, aptTriangle, 4);
SetViewportOrgEx(hdc, 100, 0, NULL);
if (RectVisible(hdc, &rc))
Polyline(hdc, aptRectangle, 5);
SetViewportOrgEx(hdc, 0, 100, NULL);
if (RectVisible(hdc, &rc))
Polyline(hdc, aptPentagon, 6);
SetViewportOrgEx(hdc, 100, 100, NULL);
if (RectVisible(hdc, &rc))
Polyline(hdc, aptHexagon, 7);
EndPaint(hwnd, &ps);
return 0L;
.
.
.
Współrzędne każdego rysunku w tym przykładzie znajdują się w tym samym prostokącie 100-do-100. Przed narysowaniem figury, w procedurze okna ustawia się źródło widoku na inną część obszaru klienta przy użyciu funkcji SetViewportOrgEx. Zapobiega to rysowaniu figur jedna na drugiej. Zmiana obszaru początkowego widoku nie ma wpływu na obszar kadrowania, ale wpływa na sposób interpretowania współrzędnych prostokąta przekazywanego do RectVisible. Zmiana źródła umożliwia również użycie pojedynczego prostokąta w celu sprawdzenia regionu aktualizacji, a nie poszczególnych prostokątów dla każdego rysunku.