资源简介
重点是模仿了CAD的矢量绘图功能,实现了画直线,长方形,圆形、选择线条颜色,线条粗细、移动以及清除等操作,还可以保存。

代码片段和文件信息
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace CAD
{
[Serializable]
public abstract class baseShape
{
private bool isSelected = false;//标识图形是否被选中
private Point p1;//第一个点
private Point p2;//第二个点
public Color penColor;
public int penwidth ;
public void setSelected()//设置为选中状态
{
this.isSelected = true;
}
public void setUnSelected()//设置为非选中状态
{
this.isSelected = false;
}
public Point getP1()
{
return p1;
}
public void setP1(Point p1)
{
this.p1 = p1;
}
public Point getP2()
{
return p2;
}
public void setP2(Point p2)
{
this.p2 = p2;
}
public abstract void draw(Graphics g);//画图形
public abstract Point[] getAllHitPoint();//得到所有图形
public abstract void setHitPoint(int hitPointIndex Point newPoint);//设定热点
public abstract baseShape copySelf();//复制
public bool catchHitPoint(Point hitPoint Point testPoint)//测试热点捕捉
{
return this.getHitPointRectangle(hitPoint).Contains(testPoint);
}
public int catchShapPoint(Point testPoint)//捕捉图形
{
int hitPointIndex = -1;
Point[] allHitPoint = this.getAllHitPoint();//的到所有的热点
for (int i = 0; i < allHitPoint.Length; i++)//循环捕捉判断
{
if (this.catchHitPoint(allHitPoint[i] testPoint))
{
return i + 1;//如果捕捉到了热点,返回热点的索引
}
}
if(this.catchShape(testPoint)) return 0;//没有捕捉到热点,捕捉到了图形,返回特别热点
return hitPointIndex;//返回捕捉到的人点
}
public void drawHitPoint(Point hitPoint Graphics g)//画热点
{
g.DrawRectangle(new Pen(Color.Red1) this.getHitPointRectangle(hitPoint));
}
public void drawAllHitPoint(Graphics g)//画所有热点
{
Point[] allHitPoint=this.getAllHitPoint();
for(int i=0;i<2;i++)
{
this.drawHitPoint(allHitPoint[i]g);
}
}
public Rectangle getHitPointRectangle(Point hitPoint)//得到热点矩形,以热点为中心高宽5像素的矩形
{
Rectangle rect=new Rectangle();
rect.X=hitPoint.X-2;
rect.Y=hitPoint.Y-2;
rect.Width=5;
rect.Height=5;
return rect;
}
public abstract bool catchShape(Point testPoint);//图形捕捉
public void superDraw(Graphics g)//公共画法
{
if(this.isSelected) this.drawAllHitPoint(g);
}
public static Pen getPen(CADframe objCAD)//得到画笔
{
return new Pen(objCAD.clrobjCAD.lineWidth);
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
----------- --------- ---------- ----- ----
443124 43
- 上一篇:隐性马尔科夫HMM
- 下一篇:c#试题库——期末考试大全
相关资源
- asp.net C#购物车源代码
- C#实时网络流量监听源码
- C#百度地图源码
- Visual C#.2010从入门到精通配套源程序
- C# 软件版本更新
- C#屏幕软键盘源码,可以自己定制界面
- 智慧城市 智能家居 C# 源代码
- c#获取mobile手机的IMEI和IMSI
- C#实现简单QQ聊天程序
- 操作系统 模拟的 欢迎下载 C#版
- C#写的计算机性能监控程序
- 用C#实现邮件发送,有点类似于outlo
- MVC model层代码生成器 C#
- c#小型图书销售系统
- C# Socket Server Client 通讯应用 完整的服
- c# winform 自动登录 百度账户 源代码
- C#编写的16进制计算器
- C#TCP通信协议
- C# 数据表(Dataset)操作 合并 查询一
- C#语音识别系统speechsdk51,SpeechSDK51L
- 数据库备份还原工具1.0 C# 源码
-
[免费]xm
lDocument 节点遍历C# - EQ2008LEDc#开发实例
- DirectX.Capturec# winform 操作摄像头录像附
- c# 实现的最大最小距离方法对鸢尾花
- C#版保龄球记分代码
- C#自定义控件
- 基于c#的实验室设备管理系统621530
- C# 使用ListView控件实现图片浏览器(源
- C#简单窗体聊天程序
评论
共有 条评论