0

我是 C# 新手,但不是 OOP 新手。

我想制作一个“画布”面板,用户可以通过鼠标单击在其上绘制形状,但也可以删除它们(没有花哨的、固定大小的东西,普通的旧笔对象)。就像我说的,我希望用户能够删除他按 alt 键单击的任何对象。

我不确定我该怎么做。如果我使用 Flash,我可能会执行以下操作:

my_circle_object = new disc-or-whatever-etc;
canvas.addChild(my_circle_object);
my_circle_object.AddEventListener(MouseClickEvent, function_to_remove_child);

现在,由于编译语言在涉及简单的前端 UI 相关内容时是魔鬼,我敢肯定用 C# 编写它需要 20 倍以上的代码。但是,有什么类似于我的例子吗?

我整个下午都在阅读诸如 GraphicsContainers、SmoothingPaint、使用位图的图形持久性等内容,但我从未找到一个简单的添加事件方法。

谢谢

4

1 回答 1

0

就图形 API 而言,您使用对象上的形状方法绘制的Graphics对象(例如DrawLineDrawEllipseDrawRect等)并不代表概念对象。调用这些函数只是将项目作为位图绘制到图形表面。一旦完成,就没有任何东西可以附加事件了。

您需要创建自己的形状类型并将它们自己绘制到图形对象上。您必须在您使用的任何控件上附加适当的鼠标事件(我假设 a Panel)并进行自己的碰撞检测。

于 2010-10-19T19:04:03.187 回答