我有问题 有我要用作我的绘画窗口的panel1。 而且我也有2个按钮。 一个应该在面板中间绘制“ fillRectangle”,第二个应该在面板旁边绘制“ fillellipse”。 我没有画图本身的问题

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

但是我想知道,如何使按下每个按钮在面板内部绘制不同的形状。 我是否需要在panel1_Paint中同时放置椭圆和矩形并使用诸如...的标志

if(ellip == 1) FillEllipse; 
if(recta == 1) FillRectangle

使用按钮设置哪些? 我希望我可以在按钮或函数内部编写绘图部分的代码,然后以某种方式引用该面板。 可能吗?

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

如果您希望按钮具有自己的绘画例程,则它们会自行绘制,而您的面板是不必要的,无论如何绘画,它们都将具有自己的画布。

如果您希望一个面板根据某些属性在其自身上绘制形状,那么可以,您会沿着建议的路线走下去,尽管我可能会受到某种形状类的诱惑,即使它不是控件。 使添加其他形状或更多形状变得容易得多。

您可以让面板带有一组形状,这些形状实现了说IDraw的形状,该形状接受一个Graphics引用,然后对其进行迭代,并使用Panel1的图形实例对其进行调用。

如果我希望启用,可见,制表符,单击等,尽管这是我的话,我将拥有一个ShapedButton控件。

  ask by Kedor translate from so

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

1回复

C ++ / CLI Visual C ++ 2010 Express-绘制多个椭圆

我想在某些面板上/中绘制多个填充的椭圆。 画一个不是一个问题,我正在使用: 它绘制以矩形为边界的红色椭圆,并用红色填充。 (假设我将给出x和y )。 我遇到的问题是,当我想在随机位置绘制多个这样的椭圆形时。 所以我需要传递随机的x和y (使用rand() %somenumber)
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。
4回复

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

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

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

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

如何获取面板内单击事件的坐标?

如何获得鼠标在面板内单击的坐标? 例如,我希望能够用鼠标单击的地方放置像素。 我可以处理绘图部分,但是我不知道如何使我的程序侦听该click事件,以及如何获取其x / y坐标,以便可以在正确的位置进行绘图。 我从未见过类似的代码,也无法在Google上找到相关信息,所以我无法显示任何代
7回复

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

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

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

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