我是C#的新手,但不是OOP。
我想创建一个“画布”面板,用户可以通过鼠标点击绘制形状,但也可以删除它们(没有花哨的,固定的尺寸和诸如此类的普通旧笔对象)。就像我说的,我希望用户能够删除他点击的任何对象。
我不确定我究竟能做到这一点。如果我使用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,使用位图等的图形持久性等内容,但我从未找到过简单的添加事件方法..
谢谢
答案 0 :(得分:0)
使用Graphics
对象上的形状方法(例如DrawLine
,DrawEllipse
,DrawRect
等)绘制的对象不代表概念对象就图形API而言。调用这些函数只是将项目作为位图绘制到图形表面。一旦完成,就没有任何东西可以将事件附加到。
您需要创建自己的形状类型并让它们自己绘制到图形对象。你必须在你正在使用的任何控件上附加适当的鼠标事件(我假设Panel
)并进行自己的碰撞检测。