[WinAPI] Rysowanie figur
Ostatnio zmodyfikowano 2013-11-05 00:26
Skeetch Temat założony przez niniejszego użytkownika |
[WinAPI] Rysowanie figur » 2013-11-04 23:57:28 Mam mały problem z rysowaniem figur z wykorzystaniem WinAPI. Mój program ma rysować kratownicę po naciśnięciu lewego przycisku myszy, a po nacisnięciu prawego przycisku ma narysować okręgi. Program rysuje to co powinien, ale nie wiem jak rozwiązać sprawę odrysowywania gdy zasłonię okno a później je odsłonię Fragment kodu: case WM_LBUTTONDOWN: { RECT WindowRect; GetWindowRect( hwnd, & WindowRect ); const int W = WindowRect.right - WindowRect.left; const int H = WindowRect.bottom - WindowRect.top; HDC hdc = GetDC( hwnd ); RECT Rect = { 0, 0, W, H }; FillRect( hdc, & Rect, CreateSolidBrush( 0xFFFFFF ) ); for( int i = 0; i < W; i += 10 ) { MoveToEx( hdc, i, 0,( LPPOINT ) NULL ); LineTo( hdc, i, H ); } for( int i = 0; i < H; i += 10 ) { MoveToEx( hdc, 0, i,( LPPOINT ) NULL ); LineTo( hdc, W, i ); } break; }
case WM_RBUTTONDOWN: { RECT Okno; GetWindowRect( hwnd, & Okno ); const int W = Okno.right - Okno.left; const int H = Okno.bottom - Okno.top; HDC hdc = GetDC( hwnd ); RECT Rect = { 0, 0, W, H }; FillRect( hdc, & Rect, CreateSolidBrush( 0xFFFFFF ) ); int szer = H; int i = 0; do { Ellipse( hdc, i, i, szer, szer ); szer -= 10; i += 10; } while( i < H / 2 ); break; }
|
|
den93 |
» 2013-11-05 00:26:51 Musisz utworzyć pomocniczy kontekst urządzenia wsadzić w niego bitmape i na nim wszystko rysować a potem przerysować go na domyślne urządzenie w WM_PAINT chociażby za pomocą funkcji BitBlt. Funkcje: GetDC ReleaseDC HDC kontekst_pomocniczy = CreateCompatibleDC(...) DeleteDC CreateCompatibleBitmap DeleteObject SelectObject
Jak coś nie wiesz to pytaj, albo googluj pełno tego w necie. Może jest łatwiejsze rozwiązanie, bynajmniej nie jestem specem od WinApi. |
|
« 1 » |