Rysowanie w zaleznosci od wielkosci ekranu

0

Witam. Mam za zadanie napisanie programu który będzie rysował na ekranie (w moim przypadku) tak dużo kółek jak to jest możliwe, w zależności od wielkości ekranu. I będzie reagował na to gdy będę zmniejszał okno to będzie mniej kółek, gdy będę powiększał ekran to będzie się rysować więcej. Oto fragment kodu w którym wszystko się dzieje. Póki co jedynie rysuje mi jedno koło. Wiem, że powinny być jakieś pętle for albo while ale nie bardzo mi to wychodzi. Możecie mi na początku pomoc to tam w tych pętlach ma być zawarte?

void OnPaint(HDC &hdc, HWND &hWnd)
{
 
        RECT clientRect;
        POINT aCenterPos;
        CCircle myCircle;
 
        GetClientRect(WindowFromDC(hdc),&clientRect);
 
        aCenterPos.x = 600;
        aCenterPos.y = 400;
        myCircle.SetCenterPos(aCenterPos);
        myCircle.SetFillColor(RGB(250,0,0));
        myCircle.SetPenColor(RGB(100,100,100));
        myCircle.SetRadius(100);
        myCircle.Paint(hdc);
 

        myCircle.Paint(hdc);
 
}
0

Pseudokod:

int X;
int Y;
X = 0;
Y = 0;
while (Y < wysokosc_ekranu)
{
 X=X+rozmiar_kola;
 NarysujKolo(X, Y, rozmiar_kola);
 if (X >= szerokosc_ekranu)
 {
  Y=Y+rozmiar_kola;
  X=0;
 }
}

Może tak ?

0
int X;
int Y;
X = 0;
Y = 0;
while (Y < GetClientRect(WindowFromDC(hdc),&clientRect))
{
 X=X+myCircle.GetRadius();
 myCircle.Paint(hdc) ;
 if (X >= GetClientRect(WindowFromDC(hdc),&clientRect))
 {
  Y=Y+myCircle.GetRadius();
  X=0;
 }
}

napisałem to tak, według Twojego wzoru, ale rysuje ciągle jedno koło. coś robię źle ale nie wiem co.

0
int X;
int Y;
X = 0;
Y = 0;

IMHO prościej napisać int x, y.

Jesteś pewien, że rysuje jedno koło, a nie wiele kół w jednym miejscu? Co zwracają metody GetRadius' i GetClientRect''? Debugowałeś?

0

zrobione, temat do usunięcia ;) dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1