第1章 .NET基础 1
1.1 .NET开发环境 1
1.2 基本语法 3
1.2.1 数据类型与转换 3
1.2.2 变量 5
1.2.3 数组 5
1.2.4 过程 6
1.3 名字空间 9
2.1.1 属性 11
2.1 类 11
第2章 面向对象编程 11
2.1.2 方法 13
2.1.3 构造函数 16
2.1.4 重载 17
2.1.5 Me和this 18
2.1.6 应用Position类 19
2.2 继承 20
2.2.1 基类 20
2.2.2 派生类 22
2.2.3 抽象基类 24
2.2.4 重写 25
2.2.5 遮蔽 25
2.2.6 重载 27
2.2.7 MyBase和base 27
2.3 接口 28
2.3.1 创建IGElement接口 28
2.3.2 实现IGElement接口 28
2.3.3 测试IGElement接口 30
2.4 多态 30
2.4.1 用继承实现多态 31
2.4.2 用接口实现多态 32
2.4.3 两种方式的比较 34
第3章 GDI+编程 35
3.1 Graphics 对象 35
3.1.1 创建和使用Graphics对象 35
3.1.2 Paint事件和OnPaint方法 40
3.2 线条绘制 40
3.2.1 颜色 40
3.2.2 画笔 41
3.2.3 线条绘制示例 42
3.3.1 FontFamily类 46
3.3 文本 46
3.3.2 Font类 47
3.3.3 StringFormat类 47
3.3.4 刷子 48
3.3.5 DrawString方法 49
3.3.6 文本绘制示例 49
3.4 路径 50
3.4.1 GraphicsPath类 51
3.4.3 路径定义示例 52
3.4.2 绘制和填充路径 52
3.5 区域 53
3.5.1 Region类 53
3.5.2 渐变色填充 55
3.6 坐标与变换 59
3.6.1 坐标系统 59
3.6.2 几何变换 59
3.6.3 全局坐标与局部坐标 64
3.7 Alpha混合 70
3.8 反走样 71
3.9.1 为什么还要使用API函数 73
3.9 用API函数绘图 73
3.9.2 API函数的声明和调用 74
3.9.3 用API函数绘图示例 74
第4章 设计CAD小系统的基本思路和技术 78
4.1 相关类的设计 78
4.1.1 对象和类 78
4.1.2 基本图元类设计 78
4.1.3 交互绘图类设计 79
4.2 坐标系统 80
4.1.4 类的交互 80
4.3 交互技术及其实现 82
4.3.1 用鼠标绘图 83
4.3.2 橡皮线 85
4.4 集合类 89
4.5 其他技术 92
4.5.1 数据存盘 92
4.5.2 界面优化 92
第5章 基本图元类设计 93
5.1 Win32API类 93
5.2 CGElement类 97
5.3 CLine类 101
5.4 CRectangle类 106
5.5 CCircle类 112
5.6 CArc类 117
5.7 CText类 125
第6章 交互绘图类设计 133
6.1 ICommand接口 133
6.2 CCreateLine类 133
6.3 CCreateRectangle类 138
6.4 CCreateCircle类 142
6.5 CCreateArc类 147
6.6 CCreateText类 153
6.7 实现交互绘图 155
6.7.1 创建程序界面 155
6.7.2 创建测试代码 156
第7章 图元的编辑 161
7.1 拾取图元 161
7.1.1 包围矩形的计算 161
7.1.2 拾取图元 172
7.2 选择图元 181
7.2.1 添加菜单资源 182
7.2.2 鼠标单选 182
7.2.3 全选 184
7.2.4 放弃选择 186
7.3 删除图元 187
第8章 图元变换 188
8.1 平移变换 188
8.1.1 更新图元类 188
8.1.2 创建CMove类 192
8.1.3 实现平移图元 196
8.2 旋转变换 197
8.2.1 更新图元类 198
8.2.2 创建CRotate类 201
8.2.3 实现旋转图元 205
8.3 镜像图元 206
8.3.1 更新图元类 207
8.3.2 创建CMirror类 211
8.3.3 实现镜像图元 215
8.4.2 在派生类中重写Scale方法 216
8.4.1 在CGElement类中添加Scale方法 216
8.4 比例缩放图元 216
8.4.3 实现比例变换 219
第9章 GDI+提供的交互技巧 221
9.1 获取线形图元的包围矩形 221
9.2 拾取线形图元 223
9.3 区域的拾取 230
9.4 图元的复制 233
9.5 曲线的拾取 234
9.6 图元变换 239
10.1 相交线 245
第10章 相交图元 245
10.2 矩形框拾取 255
10.3 曲线求交 268
第11章 优化处理 274
11.1 强键值的集合类 274
11.1.1 .NET提供的集合类的缺点 274
11.1.2 创建强键值的集合类 275
11.2 获得For Each 283
11.2.1 以后期绑定方式使用ForEach 283
11.2.2 以前期绑定方式使用ForEach 285
11.3 圆整错误 290
11.4 使用GDI+交互绘图 293
11.5 界面美化 299
11.5.1 添加工具栏和状态栏 299
11.5.2 启动窗口 306
11.5.3 About窗口 308
11.6 数据存储 309
11.6.1 序列化与反序列化 309
11.6.2 CAD图形数据的序列化和反序列化 314
12.1 状态模式 319
第12章 设计模式讨论 319
12.2 访问者模式 320
12.3 模板方法模式 328
12.4 策略模式 340
12.5 其他设计模式 348
12.5.1 工厂方法模式 349
12.5.2 命令模式 349
12.5.3 观察者模式 349
12.5.4 记事模式 349
参考文献 350