《矢量图形系统开发与编程》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:陈建春编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2004
  • ISBN:7505392522
  • 页数:485 页
图书介绍:本书是矢量图形系统开发技术和VC++编程技术的集合体。以矢量图形系统的开发为主线贯穿全书,全面介绍和分析了MFC程序设计技术和矢量图形系统各功能的开发。包括各种MFC辅助工具的使用方法、与图形有关的MFC类、文档和视图的实现、鼠标交互绘图等。

第一篇 VC++程序设计技术要点 3

第1章 MFC应用程序设计开发工具 3

1.1 使用MFC AppWizard 4

1.1.1 MFC AppWizard的启动 4

1.1.2 利用MFC AppWizard产生MFC应用程序的步骤 6

1.2 使用ClassView 10

1.2.1 启动ClassView 10

1.2.2 编辑定位 11

1.2.3 增加类 11

1.2.4 增加类的成员 14

1.3 使用ResourceView 16

1.3.1 ResourceView的调用 16

1.3.2 ResourceView工作分析 17

1.4 使用FileView 20

1.4.1 打开一个程序项目 20

1.4.2 FileView相关的操作功能 21

1.5 使用ClassWizard 22

1.5.1 Windows消息 23

1.5.2 消息处理函数 24

1.5.3 ClassWizard的作用和启动 26

1.5.4 ClassWizard管理消息处理函数 27

1.5.5 ClassWizard管理重载虚函数 31

1.5.6 ClassWizard管理映射变量 33

1.5.7 管理Automation和ActiveX事件 37

1.5.8 重新构造开发项目的ClassWizard工作信息 38

1.6 使用DataView 38

1.7 管理多个程序项目 39

1.8 使用各设计工具进行编程的建议 40

第2章 MFC应用程序框架 42

2.1 MFC应用程序基本框架类和文件组成 42

2.1.1 基本程序框架类 42

2.1.2 应用程序的主要源文件组成 43

2.2 MFC应用程序中各个框架类的作用 44

2.3 MFC应用程序的执行步骤分析 46

2.4 MFC应用程序设计结构体系剖析 48

2.4.1 标准菜单的执行分析 49

2.4.2 修改标准菜单的执行功能 50

2.4.3 MFC应用程序多态性的实现 51

2.4.4 MFC应用程序中各框架类对象的相互调用关系 53

第二篇 实现基本矢量图形系统 57

第3章 与绘图有关的MFC类及操作 57

3.1 绘图类 57

3.1.1 绘图类简介 57

3.1.2 几个绘图类的主要差别 58

3.1.3 绘图类的使用方法 59

3.2 绘图设备类 60

3.2.1 CGdiObject类 60

3.2.2 CPen类 60

3.2.3 CBrush类 63

3.2.4 CFont类 65

3.2.5 CRgn类 68

3.3 坐标映像方式 74

3.3.1 Windows映像方式及其设置方法 74

3.2.6 CPalette和CBitmap类 74

3.3.2 逻辑坐标与设备坐标的转换 76

3.4 窗口和视口 76

3.4.1 窗口和视口的概念 76

3.4.2 窗口和视口有关的操作函数 77

3.4.3 窗口逻辑坐标与视口设备坐标的转换 78

3.5.1 选用绘图设备对象 81

3.5 其他绘图类操作函数 81

3.5.2 主要绘图属性设置函数 82

第4章 实现基本矢量图形系统的文档和视图 85

4.1 组织矢量图形系统的图形元素类 85

4.1.1 图形元素基类的组织 85

4.1.2 直线类组织 86

4.1.3 连续直线或多边形区域类组织 87

4.1.4 圆类组织 88

4.1.5 圆弧类组织 89

4.1.6 标注文本类 90

4.1.7 图形参数类 91

4.2 组织矢量图形系统的文档 93

4.2.1 组织面向对象的文档存储管理机制 93

4.2.2 利用MFC模板定义管理图形元素对象指针的对象 93

4.2.3 实现矢量图形系统的文档 94

4.2.4 实现文档的管理功能 95

4.3 实现矢量图形系统的视图 101

4.3.1 组织实现坐标系 101

4.3.2 实现各图形元素类的绘制函数 107

4.3.3 视图类的OnDraw函数 116

4.3.4 实现视图 118

第5章 鼠标交互绘图 120

5.1 用鼠标绘图要解决的主要问题 120

5.1.1 捕捉鼠标操作消息 120

5.1.3 在屏幕上拖动图形 122

5.1.4 保存图形数据到文档 122

5.1.2 捕捉所有的鼠标输入 122

5.1.5 将图形以实际的形态重画 123

5.2 加入一个绘图菜单 123

5.2.1 增加菜单资源 123

5.2.2 增加菜单的消息处理函数 124

5.3 交互绘制各种图形元素 126

5.3.1 获得图形元素的惟一识别号 126

5.3.2 绘制直线 128

5.3.3 绘制连续直线和多边形区域 132

5.3.4 绘制圆和圆形区域 135

5.3.5 绘制圆弧 138

5.4 交互绘制标注文本 146

5.4.1 对话框 146

5.4.2 交互绘制标注文本的过程 147

5.4.3 创建对话框资源 147

5.4.4 实现标注文本对话框类 148

5.4.5 实现标注文本交互绘制功能 152

6.1.1 增加菜单资源 156

第6章 矢量图形系统的操作功能 156

6.1 增加图形操作菜单 156

6.1.2 增加消息处理函数 157

6.2 图形重画 158

6.2.1 全屏重画 158

6.2.2 局部重画 159

6.3 图形的放大和移动 160

6.3.1 屏幕参数的计算方法 160

6.3.2 图形放大和移动的实现 161

6.4 重画上屏和重画首屏 165

6.4.1 需要记录屏幕状态 165

6.4.2 实现重画上屏和重画首屏功能 168

6.5 显示全图 169

6.5.1 各类图形元素边界矩形的计算 170

6.5.2 实现显示全图功能 174

6.6.1 提高图形重画的速度 177

6.6.2 提高图形重画速度的方法 177

6.6 提高矢量图形系统重画速度的基本方法 177

6.6.3 加快图形元素的绘制速度 179

6.7 实现滚动视图 180

6.7.1 滚动视图的实现方法 180

6.7.2 滚动区域参数设置 180

6.8 定制图形滚动功能 182

6.8.1 确定滚动步长 182

6.8.2 创建滚动条 182

6.8.3 实现图形滚动功能 183

第7章 图形的删除和恢复 189

7.1 鼠标点选图形元素 189

7.1.1 各种图形元素的选中区域 189

7.1.2 各种图形元素的点选判断函数 194

7.1.3 选中图形元素的特殊显示 198

7.1.4 实现点选图形元素功能 199

7.1.5 放弃选中的图形元素 205

7.1.6 图形元素的显示和选中顺序 205

7.2.1 删除操作的类型 206

7.2 图形元素的删除 206

7.2.2 从屏幕上删除图形元素的方法 207

7.2.3 各类图形元素的删除操作 208

7.2.4 实现图形元素删除操作 212

7.3 文档逆向操作 213

7.3.1 逆向操作的含义 214

7.3.2 记录文档编辑操作过程 214

7.3.3 实现文档逆向操作 221

7.3.4 实现操作过程的完全逆向化 223

第8章 图形的存取功能 225

8.1 利用串行化存取文档 225

8.1.1 CArchive类及CArchive对象的创建 225

8.1.2 Serialize函数 227

8.1.3 CObArray类的Serialize函数 229

8.2 实现矢量图形系统的存取功能 230

8.2.1 实现各个图形元素类的串行化 230

8.2.2 MFC框架程序的文档串行化机制 235

8.2.3 实现矢量图形系统的文档存取功能 236

8.2.4 SetModifiedFlag函数 238

第9章 矢量图形系统的子图、颜色、图层管理 241

9.1 子图管理 241

9.1.1 组织管理子图 241

9.1.2 组织管理子图的图例 243

9.1.3 创建子图的方法 244

9.2 管理各种图形参数 245

9.2.1 管理颜色 245

9.2.2 管理图层 247

9.2.3 管理线型 249

9.2.4 增加辅助绘图模式 249

第10章 图形的打印输出 251

10.1 视图的打印机理和实现方法 251

10.1.1 视图的打印机理 251

10.1.2 打印功能的实现方法 252

10.2 实现矢量图形系统的打印功能 255

10.2.1 实现图形分页打印功能 255

10.2.2 实现具体的打印功能 258

11.1 图形旋转 259

11.1.1 点与点的旋转操作 259

第11章 图形的旋转、放缩和移动 259

11.1.2 各类图形元素的旋转操作 260

11.2 图形放缩 262

11.2.1 一个点相对于基点的放缩操作 263

11.2.2 实现各类图形元素的放缩操作 263

11.3 图形移动 265

12.1.1 线型的描述方式 269

12.1.2 组成线型的图形元素 269

第三篇 开发矢量图形系统的高级功能 269

12.1 线型的描述方式和实现方法 269

第12章 线型的制定和绘制 269

12.1.3 实现线型所必须具备的功能 271

12.2 实现矢量图形系统的线型 273

12.2.1 线型体的数据定义 273

12.2.2 线型体的绘制 275

12.2.3 绘制使用线型的直线段 284

12.2.4 绘制使用线型的圆弧 288

第13章 实现多边形区域的子图填充 291

13.1 填充子图的结构组织和制定 291

13.2 绘制子图 292

13.2.1 各类图形元素中用于子图绘制的函数 292

13.2.2 实现子图的绘制功能 294

13.3 绘制填充子图 295

13.3.1 计算子图的插入点 295

13.3.2 绘制填充子图 299

13.4 剪裁填充子图 301

13.4.1 各个图形元素类中包含剪裁功能的绘制函数 301

13.4.2 实现子图的绘制功能 305

第14章 图形元素的放大操作 307

14.1 限制图形元素放大倍数的原因 307

14.1.1 VC++基本图形绘制函数的参数取值限制 307

14.1.2 影响图形元素放大倍数的原因 307

14.2.1 对图形元素进行剪裁操作 308

14.2 解决图形放大倍数的方法 308

14.2.2 剪裁操作的实现 309

第15章 大容量图形数据的存储 323

15.1 数据存储问题的由来 323

15.1.1 目前系统组织图形元素数据的机制和方法 323

15.1.2 最可能引起内存和性能问题的图形元素 323

15.2 大容量图形数据存储问题的解决方法 324

15.2.1 方案的选择 324

15.2.2 用硬盘临时文件组织存储CPline类图形元素顶点数据的方法 325

第16章 图形元素的平面几何关系计算 332

16.1 直线与多边形区域的关系 332

16.1.1 直线与直线的关系 332

16.1.2 直线与多边形区域的相交关系 337

16.1.3 连续直线与多边形区域的相交关系 340

16.2 圆弧与多边形区域的关系 343

16.2.1 圆与直线的关系 343

16.2.2 圆弧与直线的关系 347

16.2.3 圆弧与多边形区域的关系 350

16.3 各类图形元素与圆形区域的关系 353

16.3.1 圆与圆的关系 353

16.3.2 圆弧与圆形区域的关系 355

16.3.3 直线与圆形区域的关系 358

16.3.4 连续直线与圆形区域的关系 361

16.4 两个多边形区域的相交、相并、剪裁关系 363

16.4.1 两个多边形区域的交集 363

16.4.2 两个多边形区域的并集 373

16.4.3 一个多边形区域剪裁另外一个多边形区域 382

16.5 环形区域的相交、相并、剪裁计算的思路 389

16.5.1 实心区域与环形区域的相交、相并、剪裁计算 389

16.5.2 两个环形区域相交、相并、剪裁计算的思路和方法 393

第17章 矢量图形系统的外部接口 395

17.1 读入其他图形系统的图形 395

17.1.1 读入AutoCAD的DXF文件 395

17.1.2 读入MapGIS明码文件 410

17.2 输出可识别的接口文件 411

17.1.3 读入系统自身格式的接口文件 411

17.2.1 通过DXF文件输出 412

17.2.2 输出到自身定义的接口格式 418

17.2.3 输出到数据库 419

第18章 矢量显示位图 420

18.1 位图文件的格式 420

18.2 CBitmap类及CBitmap对象的初始化方法 423

18.2.1 CBitmap类 423

18.2.2 初始化CBitmap类对象的方法 424

18.3 显示位图的步骤和主要的位操作函数 426

18.3.1 显示位图的步骤 427

18.3.2 位图操作函数 428

18.4 显示位图的函数实现 430

18.4.1 显示装载在资源文件中的位图 430

18.4.2 通过HBITMAP句柄装载显示位图文件 431

18.4.3 用画点法选择装入位图数据显示位图 438

19.1.1 打开、关闭、清空剪裁板 446

19.1 剪裁板使用方法 446

第19章 利用剪裁板剪裁、移动和拷贝图形 446

19.1.2 存取剪裁板 447

19.1.3 注册和检查剪裁板格式 449

19.2 用剪裁板实现图形元素的剪裁、移动和复制功能 452

19.2.1 实现各图形元素数据的字符串表示 452

19.2.2 将要剪裁的图形元素数据写入剪裁板 458

19.2.3 从剪裁板中读出图形元素 462

19.2.4 实现图形元素的剪裁、拷贝和粘贴操作功能 466

20.1.1 不允许多用户同时编辑方式 470

20.1.2 允许多用户同时编辑方式 470

第20章 实现网络化的矢量图形系统 470

20.1 网络化矢量图形系统的方案选择 470

20.2 实现图形元素的数据库记录化 472

20.2.1 直线等图形元素和图形参数的数据库记录化 472

20.2.2 连续直线的数据库记录化 479

附录 代码光盘与技术支持 484

参考书目 485