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

标签 c++ visual-studio visual-studio-2010 c++-cli

我遇到了一个问题。我想将 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

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

最佳答案

如果你想让按钮有自己的绘画例程,那么他们自己画,你的面板是不必要的,反正在绘画方面,他们会有自己的 Canvas 。

如果你想要一个根据某些属性在自身上绘制形状的面板,那么是的,你可以按照你建议的路线走下去,尽管我会被某种形状类所吸引,即使它不是一个控件.将使添加其他形状或更多形状变得更加容易。

您可以让面板携带一组形状,这些形状实现了采用图形引用的 IDraw,然后遍历它们并使用 Panel1 的图形实例调用它。

如果是我,但特别是如果我想要启用、可见、选项卡、单击等。我会有一个 ShapedButton 控件。

关于C++/CLI Visual C++ 2010 Express - 在一个面板内绘制不同的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8466635/

相关文章:

c++ - 使无序初始化 statc 有序

c++ - 如何有效地从 std::string 中删除双引号(如果存在)

c++ - "else"错误之前的预期主表达式

C++/Objective-C : The two files of a class are called Header and . ..?

c# - Visual Studio 2015 中的项目加载失败

c# - Visual Studio - 使用命令行更新项目服务引用

c# - 基于 XSD 创建多个类文件

.net - 默认情况下如何在双击表单时打开代码?

c++ - 在 C++/VS2012 中初始化 OpenSSL 库使我的应用程序崩溃 :(

visual-studio-2010 - 无法从 Visual Studio 2010 发布网站