《Windows图形编程》PDF下载

  • 购买积分:21 如何计算积分?
  • 作  者:(美)Feng Yuan著;英宇工作室译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2002
  • ISBN:7111097785
  • 页数:785 页
图书介绍:

第1章 基本技术和知识 1

1.1 用C/C++进行基本的Windows编程 1

1.1.1 Hello world(版本1):启动浏览器 2

1.1.2 Hello World(版本2):直接绘制到桌面 3

1.1.3 Hello World(版本3):创建一个全屏窗口 4

1.1.4 Hello world(版本4):用DirectDraw画图 10

1.2 汇编语言 14

1.3.1 开发与测试系统 17

1.3 程序开发环境 17

1.3.2 编译器 18

1.3.3 Microsoft平台软件开发工具 20

1.3.4 Microsoft驱动程序开发工具 21

1.3.5 Microsoft开发网络库 22

1.4 Win32可执行文件格式 23

1.4.1 导入目录 26

1.4.2 导出目录 29

1.5 Microsoft Windows操作系统的体系结构 31

1.5.2 微内核 32

1.5.1 硬件抽象层 32

1.5.3 设备驱动程序 33

1.5.5 执行体 34

1.5.4 窗口管理和图形系统 34

1.5.6 系统服务:Windows本身的API 35

1.5.7 系统进程 36

1.5.9 环境子系统 37

1.5.8 服务 37

1.6.2 范例程序 38

1.6.1 其他参考文献 38

1.6 小结 38

2.1 Windows图形系统组件 40

第2章 Windows图形系统体系结构 40

2.1.2 Windows视频系统 42

2.1.1 多媒体 42

2.1.4 OpenGL 43

2.1.3 静态图像 43

2.1.7 内核模式驱动程序 44

2.1.6 OS内核模式组件 44

2.1.5 Windows媒体 44

2.2.1 从GDI32.DLL导出的函数 45

2.2 GDI体系结构 45

2.2.2 GDI函数分类 46

2.2.3 GDI系统服务调用 47

2.2.4 从Win32 GDI API到 GDI引擎系统服务调用 48

2.3.1 DirectX组件 49

2.3 DirectX体系结构 49

2.3.2 DirectDraw体系结构 51

2.4 打印体系结构 53

2.4.2 打印池系统服务进程 54

2.4.1 Win32打印池客户DLL 54

2.4.5 打印处理器 55

2.4.4 打印提供者 55

2.4.3 打印池路由器 55

2.4.7 打印池过程一瞥 57

2.4.6 语言监视器和端口监视器 57

2.5 图形引擎 58

2.5.1 图形引擎系统服务 59

2.5.2 图形绘制引擎 60

2.5.4 图元变换 62

2.5.3 图形引擎数据结构 62

2.6.2 显示驱动程序函数区域 63

2.6.1 视频端口驱动程序和视频微端口驱动程序 63

2.5.5 字体驱动程序 63

2.6 显示驱动程序 63

2.6.4 表面绘制调用、钩子和输出 64

2.6.3 显示驱动程序初始化 64

2.6.5 其他驱动程序特性 65

2.6.6 对DirectDraw/Direct3D显示驱动程序的支持 66

2.7 打印机驱动程序 67

2.7.2 打印机驱动程序图形DLL 68

2.7.1 微软打印机驱动程序框架结构 68

2.7.3 HTML打印机驱动程序 70

2.8.1 范例程序 76

2.8 小结 76

2.8.2 其他参考文献 77

3.1.2 封装和信息隐藏 78

3.1.1 类和对象 78

第3章 GDI/DirectDraw内部数据结构 78

3.1 句柄和面向对象的编程 78

3.1.3 指针与句柄 81

3.1.6 只有句柄是不够的 82

3.1.5 基于表格的映射 82

3.1.4 全等映射 82

3.2.1 对象句柄堆是不变的 83

3.2 解码GDI对象句柄 83

3.2.3 进程GDI句柄限制约为12000个 84

3.2.2 HGDIOBJ并不是指针 84

3.2.6 HGDIOBJ的部分内容是GDI对象类型 85

3.2.5 HGDIOBJ的部分内容为索引值 85

3.2.4 系统GDI句柄限制约为16384个 85

3.3 定位GDI对象句柄表 86

3.4 解码GDI对象句柄表 91

3.4.2 nCount是一个部分选择计数器 94

3.4.1 pKernel指向页面地 94

3.4.5 nType:内部对象类型 95

3.4.4 nUpper:再次检查句柄 95

3.4.3 nProcess使得GDI句柄绑定到进程 95

3.5.1 用户模式画刷数据:纯色画刷优化 96

3.5 GDI对象的用户模式数据结构 96

3.4.6 pUser指向用户模式数据结构 96

3.5.3 用户模式字体数据:宽度表 97

3.5.2 用户模式区域数据:正方形区域优化 97

3.5.4 用户模式设备上下文数据:存储设置信息 98

3.6 存取内核模式地址空间 101

3.7 WinDbg和GDI调试器扩展 107

3.8 GDI内核模式数据结构 116

3.8.2 GDI引擎中的GDI对象类型 117

3.8.1 GDI引擎中的GDI对象句柄表 117

3.8.3 GDI引擎中的设备上下文 118

3.8.4 GDI引擎 PDEV结构 122

3.8.5 GDI引擎表面 126

3.8.6 GDI引擎中的设备相关位图 127

3.8.8 GDI引擎中的画刷 129

3.8.7 GDI引擎中的DIB部分 129

3.8.9 GDI引擎中的画笔 130

3.8.10 GDI引擎中的调色板 131

3.8.11 GDI引擎中的区域 132

3.8.12 GDI引擎中的路径 135

3.8.13 GDI引擎中的字体 138

3.9 DirectDraw数据结构 144

3.8.14 GDI引擎中的其他GDI对象 144

3.10.1 其他参考文献 149

3.10 小结 149

3.10.2 范例程序 150

4.1 Win32 API调用窥视 151

第4章 Windows图形系统窥视 151

4.1.2 嵌入窥视DLL 152

4.1.1 做一个窥视程序 152

4.1.3 钩入API调用链 154

4.1.4 信息收集 155

4.1.5 数据转储 160

4.1.6 窥视控制程序 162

4.2.1 GDI API定义文件 165

4.2 Win32 GDI窥视 165

4.2.2 GDI数据解码器 166

4.2.3 完全API窥视 168

4.3.1 虚函数表 171

4.3 DirectDraw COM接口窥视 171

4.3.2 DirectDraw API定义 172

4.4 GDI系统调用窥视 173

4.3.3 虚函数表破解 173

4.5 DDI接口窥视 176

4.6.2 范例程序 180

4.6.1 其他参考文献 180

4.6 小结 180

5.1.1 帧缓冲区 182

5.1 现代视频显示卡 182

第5章 图形设备抽象 182

5.1.2 像素格式 184

5.1.3 双缓存、Z-缓存和纹理 187

5.1.5 显示设备和设置枚举 188

5.1.4 硬件加速 188

5.2 设备上下文 190

5.2.1 创建设备上下文 191

5.2.2 查询设备性能 192

5.2.3 设备上下文的属性 193

5.2.5 多窗口环境下的显示 197

5.2.4 与窗口关联的设备上下文 197

5.2.6 获取与窗口关联的设备上下文 199

5.2.9 专用设备上下文 201

5.2.8 类设备上下文 201

5.2.7 公用设备上下文 201

5.2.13 内存设备上下文 202

5.2.12 信息上下文 202

5.2.10 父设备上下文 202

5.2.11 其他设备上下文 202

5.2.14 元文件设备上下文 203

5.3 格式化设备上下文 204

5.4.1 工具栏类 206

5.4 样例程序:通用框架窗口 206

5.4.3 画布窗口类 207

5.4.2 状态窗口类 207

5.4.4 框架窗口类 208

5.4.5 测试程序 210

5.5.1 Windows更新区域 212

5.5 范例程序:绘图和设备上下文 212

5.5.2 WM_PAINT消息 213

5.5.3 可视化窗口绘图消息 214

5.6.2 范例程序 221

5.6.1 其他参考文献 221

5.6 小结 221

6.1 物理设备坐标空间 222

第6章 坐标空间和变换 222

6.2 设备坐标空间 223

6.3 页面坐标空间和映射模式 225

6.3.2 MM_ LOENGLlSH、MM_HIENGLISH映射模式 227

6.3.1 MM_TEXT映射模式 227

6.3.3 MM_LOMETRIC和 MM_HIMETRIC映射模式 228

6.3.5 MM_ISOTROPIC映射模式 229

6.3.4 MM_TWIPS映射模式 229

6.3.6 MM_ANISOTROPIC映射模式 230

6.3.7 窗口和视口原点 232

6.4 世界坐标空间 233

6.3.8 其他窗口和视口函数 233

6.4.1 affine变换 234

6.4.2 用于世界坐标变换的Win32 API 236

6.4.3 使用世界坐标变换 237

6.5 使用坐标空间 243

6.6 程序举例:滚屏和缩放 245

6.7.2 范例程序 250

6.7.1 其他参考文献 250

6.7 小结 250

7.1 GDI对象、句柄和句柄表 251

第7章 像素 251

7.1.2 GDI对象表 252

7.1.1 GDI对象存储 252

7.1.3 GDI对象句柄 253

7.1.4 GDI对象API 254

7.1.5 GDI对象泄漏检测 256

7.2.1 裁剪流水线 258

7.2 裁剪 258

7.2.2 简单区域 259

7.2.3 区域裁剪 260

7.2.4 元区域 262

7.2.5 设备上下文中的5个区域 263

7.2.6 可视化设备上下文区域 264

7.3 颜色 267

7.3.1 RGB颜色空间 268

7.3.2 HLS颜色空间 270

7.3.3 索引颜色和凋色板 275

7.3.4 高级知识 278

7.4 绘制像素 279

7.5 程序举例:Mandelbrot集 281

7.6 小结 282

7.6.2 范例程序 283

7.6.1 其他参考文献 283

8.1 元光栅操作 284

第8章 直线和曲线 284

8.3 画笔 287

8.2 背景模式与背景颜色 287

8.3.2 库存画笔 288

8.3.1 逻辑画笔对象 288

8.3.3 简单画笔 289

8.3.4 扩展画笔 291

8.3.5 查询逻辑画笔 295

8.3.6 GDI画笔对象的封装类 296

8.4 直线 298

8.5 Bezier曲线 302

8.5.1 PolyDraw函数 306

8.6 弧线 308

8.5.2 其他Bezier曲线的定义:通过所有的控制点 308

8.6.1 用角度来指定弧线:AngleArc 310

8.6.3 把弧线转换成Bezier曲线 311

8.6.2 使用内框架画笔来画弧线 311

8.7 路径 314

8.7.1 构造路径 315

8.7.2 查询路径数据 316

8.7.3 路径对象变换 319

8.7.4 使用路径画图 322

8.8 例子:用自己定义风格的线做图 324

8.7.5 把路径转换成区域 324

8.9 小结 327

8.9.2 范例程序 328

8.9.1 其他参考文献 328

9.1.2 库存画刷 329

9.1.1 逻辑画刷对象 329

第9章 区域 329

9.1 画刷 329

9.1.3 自定义画刷 330

9.1.4 系统颜色画刷 335

9.1.5 LOGBRUSH结构 336

9.2.1 作为数据结构的矩形 337

9.2 矩形 337

9.2.2 绘制矩形 338

9.2.3 边界线和控制点的绘制 340

9.3 椭圆、弦、饼状图以及圆角矩形 341

9.4 多边形 344

9.5 闭合路径 347

9.6 区域 349

9.6.1 创建区域对象 350

9.6.2 区域对象上的操作 352

9.6.3 使用区域绘图 360

9.7 渐变填充 361

9.7.1 矩形的渐变填充 362

9.7.2 用渐变填充创建3D按钮 364

9.8 实际中的区域填充 365

9.8.2 HLS颜色空间的可移植渐变填充 366

9.8.1 半透明填充 366

9.8.3 径向渐变填充 367

9.8.4 纹理和位图填充 368

9.9 小结 369

9.8.5 图案填充 369

9.9.2 范例程序 370

9.9.1 其他参考文献 370

10.1.1 BMP文件格式 371

10.1 设备无关的位图格式 371

第10章 位图基础 371

10.1.2 压缩设备无关位图 377

10.2 DIB类 378

10.1.3 分散的设备无关位图 378

10.3 显示DIB 386

10.3.3 目标矩形和拉伸模式 387

10.3.2 源矩形 387

10.3.1 StretchDIBits 387

10.3.5 光栅操作 388

10.3.4 颜色格式转换 388

10.3.7 SetDIBitsToDevice 389

10.3.6 StretchDIBits函数的例子 389

10.4 内存设备上下文 391

10.5.1 CreateBitmap 392

10.5 设备相关位图 392

10.5.3 DDB的GetObject调用 393

10.5.2 CreateBitmapIndirect 393

10.5.4 Creat Compatible Bitmap和Create Discardable Bitmap 394

10.5.5 CreateDIBitmap 395

10.5.7 在DIB和DDB间拷贝位图 396

10.5.6 LoadBitmap 396

10.6.1 显示DDB 400

10.6 使用DDB 400

10.5.8 存取原始的DDB像素阵列 400

10.6.2 在菜单中使用位图 406

10.6.3 用位图作为窗口背景 411

10.7 DIB段 415

10.7.1 CreateDIBSection 416

10.7.2 DIB段类 417

10.7.3 对DIB段调用GetObjectType/GetObject 418

10.7.4 GetDIBColorTable/SetDIBColorTable 419

10.7.5 使用DIB段:设备无关的绘制 420

10.7.6 使用DIB段:高分辨率绘制 422

10.8.1 其他参考文献 425

10.8 小结 425

10.8.2 范例程序 426

11.1.1 光栅操作的编码 427

11.1 三元光栅操作 427

第11章 高级位图图形学 427

11.1.2 三元光栅操作图表 429

11.1.3 常用的光栅操作 431

11.2 透明位图 441

11.2.1 平行四边形位块传送:PlgBlt 442

11.2.2 四元光栅操作:MaskBlt 448

11.2.3 颜色键控法:TransparentBlt 452

11.3.1 用几何图形作为屏蔽 456

11.3 不用屏蔽位图实现透明度 456

11.3.2 用裁剪作为屏蔽 457

11.3.3 预先生成图像 458

11.4 alpha混合 460

11.4.1 简单常量alpha混合 461

11.4.2 位图的淡入谈出 462

11.4.3 层叠窗口 463

11.4.4 alpha通道:AirBrush 464

11.4.5 模拟alpha混合 467

11.5.2 范例程序 469

11.5.1 其他参考文献 469

11.5 小结 469

12.1 通用像素存取 471

第12章 用Windows位图进行图像处理 471

12.2 位图affine变换 474

12.3 快速专用位图变换 476

12.4 位图颜色变换 478

12.4.2 gamma校正 481

12.4.1 将位图转换为灰度位图 481

12.5.1 通用像素变换类 483

12.5 位图像素变换 483

12.5.2 通用通道分离类 487

12.5.3 通道分高举例 489

12.5.4 直方图 490

12.6 位图空间过滤器 491

12.6.1 平滑过滤器和锐化过滤器 495

12.6.2 边缘检测和浮雕过滤器 496

12.6.3 变形过滤器 497

12.7 小结 498

12.7.2 范例程序 499

12.7.1 其他参考文献 499

13.1.1 显示设置 500

13.1 系统调色板 500

第13章 调色板 500

13.1.2 查询系统调色板 501

13.1.3 静态颜色 504

13.2 逻辑调色板 505

13.2.1 缺省调色板 506

13.2.2 半色调调色板 507

13.2.3 创建自定义调色板 508

13.3.1 WM_QUERYNEWPALETTE消息 509

13.3 调色板消息 509

13.3.3 WM_PALETTECHANGED消息 510

13.3.2 WM_PALETTEISCHANGING消息 510

13.3.4 测试程序 511

13.4 凋色板和位图 515

13.4.1 设备相关位图和调色板 515

13.4.2 设备无关的位图和调色板 518

13.4.3 DIB颜色表中的调色板索引 520

13.5 颜色的量化 522

13.4.4 DIB段和调色板 522

13.6 减少位图颜色深度 531

13.7.1 其他参考文献 537

13.7 小结 537

13.7.2 范例程序 538

14.1.1 字符集和代码页 539

14.1 什么是字体 539

第14章 字体 539

14.1.2 图元 543

14.1.3 字体 544

14.1.4 字体风格和字体族 545

14.2 位图字体 548

14.3 向量字体 552

14.4.1 TrueType字体文件格式 554

14.4 TrueType字体 554

14.4.2 字体头 556

14.4.4 字符到图元索引的映射 557

14.4.3 最大需求表 557

14.4.6 图元数据 560

14.4.5 位置索引 560

14.4.7 图元指令 567

14.4.8 水平规格(hhea和htmx表) 571

14.4.9 字距调整 573

14.4.10 OS/2和Windows规格 574

14.4.12 TrueType字体集 575

14.4.11 其他表 575

14.5.2 安装公用字体 576

14.5.1 字体资源文件 576

14.5 字体的安装和内嵌 576

14.5.5 字体的内嵌 577

14.5.4 从内存映像中安装字体 577

14.5.3 安装专用字体和Multiple MasterOpenType字体 577

14.6.1 其他参考文献 581

14.6 小结 581

14.5.6 系统字体列表 581

14.6.2 范例程序 582

15.1.1 微软印刷学术语 583

15.1 逻辑字体 583

第15章 文本 583

15.1.2 库存字体 584

15.1.3 创建逻辑字体 585

15.1.4 逻辑字体到物理字体映射 589

15.1.5 PANOSE字面匹配 590

15.2 查询逻辑字体 595

15.2.1 位图字体和矢量字体的度量 596

15.2.2 True/OpenType字体度量 598

15.2.4 字体度量的准确度 601

15.2.3 浏览LOGFDNT和字体度量 601

15.3.1 对齐文本 606

15.3 简单文本绘制 606

15.3.2 从右到左的布局与阅读方式 608

15.3.3 字符附加量和分割符附加量 610

15.3.4 字符宽度 612

15.4 高级文本绘制 615

15.4.2 字距调整 616

15.4.1 字符到图元的映射 616

15.4.3 布置字符 617

15.4.4 扩展的文本绘制 618

15.4.6 图元存取 622

15.4.5 Uniscribe 622

15.5.1 带制表符的文本绘制 629

15.5 格式化文本 629

15.5.2 简单段落格式化 630

15.5.3 设备无关的文本格式化 632

15.6.1 文本着色 635

15.6 文本特效 635

15.6.2 文本风格 637

5.6.3 文本几何特性 640

15.6.4 文本做位图 644

15.6.5 文本做曲线 649

15.6.6 文本做区域 655

15.7.2 范例程序 656

15.7.1 其他参考文献 656

15.7 小结 656

16.1.1 创建增强元文件 657

16.1 元文件基础 657

第16章 元文件 657

16.1.2 播放增强元文件 659

16.1.3 查询增强元文件 661

16.1.4 增强元文件变换 664

16.2.1 EMF记录 668

16.2 增强元文件内部结构 668

16.2.2 EMF记录类型分类 670

16.2.3 解码EMF记录 672

16.2.4 EMF中的简单GDI对象 673

16.2.5 EMF中的位图 674

16.2.6 EMF中的区域 675

16.2.8 EMF中的调色板 676

16.2.7 EMF中的路径 676

16.2.9 EMF中的坐标空间 677

16.2.10 EMF中的绘制命令 679

16.2.11 EMF设备无关性 680

16.3 枚举 EMF 681

16.3.1 用于EMF枚举的C++类 682

16.3.2 EMF回放中的慢动作 683

16.3.3 跟踪EMF回放过程 684

16.3.4 动态改变EMF 686

16.3.5 从EMF中派生EMF 687

16.4.1 EMF反编译器 690

16.4 EMF做编程工具 690

16.4.2 捕获EMF打印池文件 692

16.5 小结 693

16.5.2 范例程序 694

16.5.1 其他参考文献 694

17.1.1 打印进程 695

17.1 理解打印池程序 695

第17章 打印 695

17.1.2 打印机控制语言 696

17.1.3 直接打印到端口 698

17.1.4 通过打印池打印 700

17.1.5 EMF打印处理器 703

17.1.6 枚举打印机 704

17.1.8 设置打印机驱动程序 705

17.1.7 查询打印机 705

17.2.1 打印通用对话框 709

17.2 用GDI实现基本打印功能 709

17.2.2 创建打印机设备上下文 714

17.2.3 查询打印机设备上下文 715

17.2.4 打印任务的轮廓 716

17.3.1 统一逻辑坐标空间 719

17.3 打印设计 719

17.3.2 纸张模拟 721

17.3.3 多页、多列显示 722

17.3.4 多页打印 723

17.3.5 通用打印类 724

17.4.1 坐标空间单位 728

17.4 在打印机设备上下文中绘制 728

17.4.2 文本 729

17.4.4 JPEG图像打印 731

17.4.3 位图 731

17.5.2 范例程序 736

17.5.1 其他参考文献 736

17.5 小结 736

18.1.1 COM接口 737

18.1 组件对象模型 737

第18章 DirectDraw和 Direct3D立即模式 737

18.1.2 COM类 738

18.1.4 HRESULT 739

18.1.3 创建 COM对象 739

18.1.5 DirectX和 COM 740

18.2.1 IDirectDraw7接口 742

18.2 DirectDraw基础 742

18.2.2 IDirectDrawSurface7接口 744

18.2.3 在DirectDraw表面上绘制图形 747

18.2.4 颜色匹配 751

18.2.5 IDirectDrawClipper接口 752

18.2.6 简单 DirectDraw窗口 753

18.3 建立Direct图形库 755

18.3.1 像素绘制 756

18.3.2 直线绘制 758

18.3.3 区域填充 761

18.3.4 裁剪 762

18.3.5 后台表面 764

18.3.7 字体与文本 766

18.3.6 用彩色键控实现透明 766

18.3.8 这并不只是一个游戏 770

18.4 Direct3D立即模式 774

18.4.1 创建Direct3D立即模式环境 774

18.4.2 处理窗口大小变化 776

18.4.3 两步绘制 777

18.4.4 将Direct3D放在窗口中 778

18.4.5 纹理表面 779

18.4.6 Direct3D立即模式举例 781

18.5.1 其他参考文献 785

18.5.2 范例程序 785

18.5 小结 785