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

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

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

1回复

C ++ / CLI Visual C ++ 2010 Express-在一个面板内绘制不同的形状

我有问题 有我要用作我的绘画窗口的panel1。 而且我也有2个按钮。 一个应该在面板中间绘制“ fillRectangle”,第二个应该在面板旁边绘制“ fillellipse”。 我没有画图本身的问题 但是我想知道,如何使按下每个按钮在面板内部绘制不同的形状。 我是否需要在
1回复

Visual Studio 2010在编译C ++ / CLI项目时出现奇数错误

当我尝试编译VS2010 Windows Form应用程序时遇到一系列奇怪的错误。 我得到的错误是: 错误C2871:“ project_6”:具有该名称的名称空间不存在 错误C2653:“应用程序”:不是类或名称空间名称 错误C3861:“ EnableVisualStyl
3回复

使用Visual C ++ for C ++代替C ++ / CLI

我知道如何用C ++编写控制台程序,但是现在我想用Windows界面编写程序。 通过其拖放设计系统,MS VS 2010在编写C ++ Windows应用程序时使事情变得容易。 (.net Framework)但是,Visual Studio似乎使用了我不熟悉的C ++ / CLI。
2回复

为什么Visual Studio生成的C ++“Hello World”项目看起来有点奇怪?

我是C ++编程的新手(尽管我有Java,C#和Visual Basic方面的经验)。 我已经使用Visual Studio 2010创建了一个默认的“Hello World”示例项目,但是当我研究它生成的示例代码时,它看起来与我在查看C ++教程时看到的代码略有不同。 在我的调查中,我
4回复

Visual Studio C ++从字符串中删除最后一个字符

我的计算器程序需要一些帮助。 我为主要按钮(如数字0-9)和算术运算符创建了代码,以使其执行简单的计算。 我现在遇到的问题是使CE按钮正常工作,单击CE按钮后,我需要从显示标签中删除最后输入的字符。 我试图以某种方式修改此代码,但是它不起作用: 我知道我在这里做错了什么,您
3回复

您是否建议在Build上启用C / C ++的代码分析?

我正在使用Visual Studio 2010,在我的C ++ / CLI项目中有两个代码分析设置: 在Build上启用代码分析 在Build上启用C / C ++的代码分析 我的问题是关于第二种情况。 我已经启用了它,它需要很长时间才能运行并且它找不到太多。
2回复

对Microsoft C ++产品和术语感到困惑

自从.Net之前的日子以来,我第一次使用C ++,我对他们的某些C ++产品及其命名方式感到困惑。 在.Net之前,Microsoft支持一种称为C ++的语言,该语言非常接近行业标准。 但是,当他们引入.Net时,他们在C ++中添加了很多扩展,并将其称为“托管C ++”。 然后
7回复

Visual Studio 2010中没有适用于C ++ / CLI的IntelliSense?

我刚刚从Visual Studio 2008迁移到Visual Studio 2010 (最终版)并注意到一个主要缺陷: 当我尝试在托管C ++的C ++源文件中使用AutoComplete时,页脚中会出现一个小注释: IntelliSense for C ++ / CLI不可用
1回复

Visual Studio 2010自动切换到C ++ / CLI编译器

我在过去几个月里一直致力于C ++ / CLI项目。 现在我回到C ++,但似乎VS 2010已经开始使用C ++ / CLI编译器,即使对于标准C ++项目也是如此。 我刚刚创建了一个新的C ++空项目,但是当我编译代码时,似乎使用了C ++ / CLI编译器。 Intellis
2回复

visual-C ++ 2010中* ^和&之间的主要差异是什么?

visual-C ++ 2010中* ^和&之间的主要差异是什么?