Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[WinAPI] Rysowanie figur

Ostatnio zmodyfikowano 2013-11-05 00:26
Autor Wiadomość
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:
C/C++
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;
}
P-95315
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.
P-95316
« 1 »
  Strona 1 z 1