我想在某些面板上/中绘制多个填充的椭圆。 画一个不是一个问题,我正在使用:

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

它绘制以矩形为边界的红色椭圆,并用红色填充。 (假设我将给出xy )。 我遇到的问题是,当我想在随机位置绘制多个这样的椭圆形时。 所以我需要传递随机的xy (使用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表示我想绘制其中的几个,并且消息框显示了它随机分配的数字,因此我确定椭圆不会重叠。 问题是,在“无效” panel1之后,我只能看到1个椭圆。 :/我应该怎么做才能看到他们两个?

===============>>#1 票数:1 已采纳

所有的x, y坐标都是随机的,因此它们不依赖于其他决策过程,因此不必将其传递给panel1_paint而是可以运行lpop并生成随机数以将它们用作您的xy坐标。

  ask by Kedor translate from so

未解决问题?本站智能推荐: