基于c多机联合绘图软件的实现_毕业设计论文(编辑修改稿)内容摘要:

} public DrawMyRectangle(int x, int y, int width, int height, Color penColor, int id) { = new Rectangle(x, y, width, height)。 = penColor。 = id。 } public override void Draw(Graphics g) { Pen pen = new Pen(penColor)。 (pen, objRectangle)。 ()。 } } } 南昌航空大学 科技学院 学士学位论文 17 ( 2)在解决方案管理器中,添加一个名为 的类,提供系统公共的属性和方法。 CC 类中提供了为图形图像对象分配 ID的方法。 具体代码请看附录的源代码; ( 3)分别添加名为 和 的类文件,其中,ToolObject 表示封装鼠标事件的操作基类, ToolRectangle 实现绘制矩形是的鼠标操作。 ToolObject 类的主要代码如下; class ToolObject { protected bool isNewObjectAdded = false。 public virtual void OnMouseDown(Palette palette, MouseEventArgs e) { isNewObjectAdded = false。 ()。 } public virtual void OnMouseMove(Palette palette, MouseEventArgs e) { if (isNewObjectAdded == false) { return。 } Point point = new Point(, )。 int index = ()。 if ( == ) { DrawObject w = [index]。 (point, 5)。 } ()。 } public virtual void OnMouseUp(Palette palette, MouseEventArgs e) { = false。 ()。 isNewObjectAdded = false。 } /// summary /// 添加新的图形对象 /// /summary protected void AddNewObject(Palette palette, DrawObject w) { ()。 = true。 (w)。 = true。 ()。 南昌航空大学 科技学院 学士学位论文 18 } } 让 ToolRectangle 类从 ToolObject 继承,并重写基类的 OnMouseDown 和OnMouseMove 事件。 主要代码如下; class ToolRectangle : ToolObject { public ToolRectangle() { } public override void OnMouseDown(Palette palette, MouseEventArgs e) { (palette, e)。 DrawMyRectangle w = new DrawMyRectangle(, , 15, 15, , )。 AddNewObject(palette, w)。 isNewObjectAdded = true。 } public override void OnMouseUp(Palette palette, MouseEventArgs e) { if (isNewObjectAdded == false) { return。 } (palette, e)。 if ( != ) { int index = ()。 DrawMyRectangle w = (DrawMyRectangle)[index]。 //左上角 x坐标,左上角 y坐标 ,宽 ,高 ,颜色 ,id ((DrawMyRectangle,{0},{1},{2},{3},{4},{5}, , , , , (), ))。 ()。 } } } } (4)在 中定义一个 ToolType 枚举,表示绘制图形图像的类型;再定义一个 ToolObject 类型的 activeTool 对象,表示当前的活动对象;然后定义南昌航空大学 科技学院 学士学位论文 19 一个 ToolObject 类型的 tools 数组,表示所有鼠标操作类。 主要代码如下; public enum ToolType { Pointer, Rectangle, Text, Curve, Image, Line }。 private ToolType activeTool。 在主程序窗体 MultiDraw2 的构造函数中,进行初始化操作。 =。 tools[(int)]=newToolRectangle()。 ( 5)双击主程序窗体上的矩形按钮,在其 Click 事件中添加代码; activeTool=。 (6)单击主窗体上的 Panel 控件 ,分别找到其 MouseDown,MouseMove 和 MouseUp 事件及 Paint 事件,在对应的事件中添加下面的代码; private void Palette_MouseDown(object sender, MouseEventArgs e) { = false。 if ( == ) { tools[(int)activeTool].OnMouseDown(this, e)。 } else if ( == ) { ActiveTool =。 } } private void Palette_MouseMove(object sender, MouseEventArgs e) { if ( == || == ) { tools[(int)activeTool].OnMouseMove(this, e)。 } else { =。 } } 南昌航空大学 科技学院 学士学位论文 20 private void Palette_MouseUp(object sender, MouseEventArgs e) { if ( == ) { tools[(int)activeTool].OnMouseUp(this, e)。 } } ( 7)运行程序,单击矩形按钮,在 Panel 内 绘制多个任意大小的矩形,运行效果如图 所示 图 任意大小的矩形绘制 曲线的绘制 ( 1) 在解决方案资源管理器中,添加一个名为 DrawCurve 的类,使其从 DrawObjiect类中派生,添加相应的代码。 在 类中添加 ListPoint类型的对象PointList,使其保存曲线所经过的点的集合, PointList 中的两个相邻点之间的距离大于指定的长度。 此处给出的 Draw 方法的实现代码; 南昌航空大学 科技学院 学士学位论文 21 public override void Draw(Graphics g) { Point[] pts = new Point[]。 (pts)。 Pen pen = new Pen(penColor, penWidth)。 =。 AdjustableArrowCap myArrow = new AdjustableArrowCap(4, 4, true)。 = myArrow。 if ( 3) { if ( 1) { (pen, pts[0], pts[1])。 } } else { (pen, pts)。 } ()。 } } } ( 2)在解决方案管理器中添加一个名为 的类,使其从 ToolObjiect 类派生。 主要代码如下; class ToolCurve : ToolObject { private int minDistance = 20。 private Point myLastPoint。 public override void OnMouseDown(Palette palette, MouseEventArgs e) { (palette, e)。 = false。 Point p = new Point(, )。 DrawMyCurve w = new DrawMyCurve(p, , 2, )。 AddNewObject(palette, w)。 myLastPoint = p。 isNewObjectAdded = true。 } public override void OnMouseMove(Palette palette, MouseEventArgs e) { if (isNewObjectAdded == false) 南昌航空大学 科技学院 学士学位论文 22 { return。 } Point point = new Point(, )。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。