一个类:
class MyRectangle//以矩形零件为例(电阻)
{
point lefttop; //左上角
int width,height;//宽度
Color lineColor;//线条颜色
public MyRectangle()//构造函数
{
lefttop=new Point(10,10);
width=80;
height=30;
lineColor=Color.Red;
DrawingSelf();
}
void DrawingSelf()
{
//根据参数绘图
}
public Point LeftTop
{
Set{this.lefttop=value;
DrawingSelf();//只要参数变动就重绘
}
}
其它属性同上(Width,Height,LineColor)
在工具栏上拖一个按钮,在其单击事件中new一个上面的实例就可以了,当然也需要同步保存进你的零件容器
如果想要动态根据鼠标操作改变此电阻位置和大小,给其再加上响应鼠标的事件,给个思路你:
电阻实际上是画在一个控件上面,比如Panel我们叫P1,鼠标在电阻上操作时,实际上能响应鼠标事件的是P1
如何将P1的鼠标事件和电阻联系起来?
电阻有个属性LeftTop对应于P1的Point(0,0)的偏移位置,知道这个对应关系就好办了,将所有的零件保存在一个容器里,鼠标有操作时,遍历此容器中的零件,看哪个零件的LeftTop和Width及Height属性,找到鼠标操作能够影响的零件,这样就将鼠标和具体的零件联系起来了,进一步的动态改变零件大小位置颜色就容易了
如果多个零件被鼠标影响怎么办?
可以设计一个当前零件(操作只能当前零件有效),专门拿个变量来保存当前零件
(被鼠标单击的零件是当前零件,按了工具栏上的绘制按纽,以默认参数生成的零件也是当前零件)
顺便说一下,象这样需要画很多个电阻(只是具体参数不同,结构完全一样)程序如果用某个设计模式来设计,会是很适合的