C ++ / CLI Visual C ++ 2010 Express - рисование нескольких эллипсов - PullRequest
1 голос
/ 11 декабря 2011

Я хочу нарисовать несколько заполненных эллипсов на / на некоторой панели.Рисование одного не проблема, я использую:

Color aColor = Color::FromArgb( 255, 0, 0 ); 
SolidBrush^ aBrush = gcnew SolidBrush(aColor);
Rectangle rect = Rectangle(x, y, 10, 10);
e->Graphics->FillEllipse(aBrush, rect);

Он рисует красный эллипс, ограниченный прямоугольником, и заполняет его красным цветом.(при условии, что я дам x и y).Проблема, с которой я столкнулся, это когда я хочу нарисовать несколько таких эллипсов в СЛУЧАЙНЫХ местах.Поэтому мне нужно передать случайные x и y (используя rand()% somenumber), но я не уверен, как я могу передать эти переменные в функцию panel1_paint и нарисовать их, когда оба числа рандомизированы.Кроме того, я не хочу, чтобы последний эллипс исчез при рисовании нового.Единственный способ - использовать глобальные переменные?

Есть идеи?

Ну, я попытался, как и предлагалось, использовать цикл внутри панели, и я получил это:

for(int i=0; i<ile_przeszkod; i++){
int x = rand() % 690; int y = rand() % 690;
Color aColor = Color::FromArgb( 255, 0, 0 ); 
SolidBrush^ aBrush = gcnew SolidBrush(aColor);
Rectangle rect = Rectangle(x, y, 10, 10);
e->Graphics->FillEllipse(aBrush, rect);
MessageBox::Show("x: "+x+ " y: " +y);
}

ile_przeszkodозначает, сколько из них я хочу нарисовать, и в окне сообщения показано, какие числа были рандомизированы, поэтому я уверен, что эллипсы не перекрываются.Проблема в том, что после «аннулирования» панели 1 я вижу только 1 эллипс.: / Что я должен сделать, чтобы увидеть их обоих?

1 Ответ

1 голос
/ 12 декабря 2011

все координаты x, y являются случайными, поэтому они не зависят от какой-либо другой процедуры принятия решения, поэтому их не нужно передавать на panel1_paint, вместо этого вы можете запустить lpop и сгенерировать случайное число, чтобы использовать их в качествеx, y координаты.

...