书籍详情
GDI+图形程序设计
作者:(美)Mahesh Chand著;韩江等译;韩江译
出版社:电子工业出版社
出版时间:2005-03-01
ISBN:9787121008528
定价:¥69.00
购买这本书可以去
内容简介
GDI+是新一代的图形接口。如果要设计.NETFramework图形应用程序,就必须使用GDI+。本书是一本为.NET开发人员讲授如何编写Windows和Web图形应用程序的专著,书中全面介绍了GDI+和Windows图形程序设计的基本知识和GDI+图形程序设计的各个方面。本书适合于开发GDI+图形应用程序的初、中级程序员阅读,书中给出了大量用C#语言编写的可重用示例代码,可以使读者更快地掌握书中所介绍的各种知识和概念。本书也可以作为大专院校相关课程的重要辅导教材。《GDI+图形程序设计)是为.NET开发人员介绍如何编写Windows和Web图形应用程序的指南用书。通过大量详尽的实例,本书使有经验的程序员可以更深入地理解在.NETFramework类库中定义的整个GDI+API。本书从介绍GDI+和Windows图形程序设计的基本知识开始,其核心是对一些实际问题的指导,包括如何使用WindowsForms及如何优化GDI+的性能。本书通过一些例子来说明如何开发真实世界的工具,如GDI+Painter,GDI+Editor、ImageViewer和lnmgeAninmtor等。另外,作者还给出了大量使用C#语言编写的可重用示例代码,读者可从阔上下载完整的C#和VisualBasic.NET源代码,并可遣过这些源代码查看书中各图的彩色效果。本书主要内容包括:●比较GDI+与GDI●GDI+在.NETFramework中的定义和使用●绘制和填充图形对象●查看和操作图像●图形对象,图像和颜色等的变形●.NET中的打印●开发GDI+Web应用程序●优化绘图质量和性能●交互式颜色混合和透明颜色●GDI瓦操作性●回答一些常见的GDI+问题
作者简介
Mahesh Chand是一位.NET顾问和两个流行的社区网站www.c-sharpcorner.com及www.mindcracker.com的创建者及管理员。他在beta版本之前就已经开始研究.NET了。Mahesh还是《C##中的ADO.NET程序员指南》和《应用ADO.NET》两本书的作者。
目录
第1章 GDI+ ——下一代图形接口 1
1.1 理解GDI+ 1
1.1.1 定义 1
1.1.2 什么是GDI+ 2
1.1.3 .NET Framework中的GDI+ 库 3
1.1.4 GDI+ 为GDI程序员提供了哪些新特性 4
1.2 探索GDI+ 的功能 5
1.2.1 二维矢量图形程序设计 5
1.2.2 图像处理 5
1.2.3 版式 6
1.2.4 打印 6
1.2.5 设计 6
1.3 从GDI的角度学习GDI+ 6
1.3.1 不再使用句柄和设备上下文 6
1.3.2 面向对象的方法 8
1.3.3 图形对象的独立性 8
1.3.4 方法重载 9
1.3.5 绘制和填充方法 9
1.3.6 区域及其样式 10
1.4 .NET中的GDI+ 名称空间和类 10
1.4.1 System.Drawing名称空间 11
1.4.2 System.Drawing.Design名称空间 12
1.4.3 System.Drawing.Drawing2D名称空间 12
1.4.4 System.Drawing.Imaging名称空间 12
1.4.5 System.Drawing.Printing名称空间 13
1.4.6 System.Drawing.Text名称空间 13
总结 16
第2章 第一个GDI+ 应用程序 17
2.1 绘制表面 17
2.1.1 窗体表面 19
2.1.2 打印机表面 19
2.1.3 位图表面 19
2.2 坐标系统 19
2.2.1 笛卡儿坐标系统 19
2.2.2 默认的GDI+ 坐标系统 20
2.3 指南——第一个GDI+ 应用程序 21
2.3.1 创建一个Windows应用程序 21
2.3.2 添加一个对GDI+ 的引用 22
2.3.3 在应用程序中获取一个Graphics对象 23
2.3.4 创建钢笔和画笔 25
2.3.5 绘制图形 26
2.3.6 释放对象 27
2.3.7 生成并运行应用程序 28
2.4 一些基本的GDI+ 对象 28
2.4.1 Color结构体 29
2.4.2 Point和PointF结构体 29
2.4.3 Rectangle和RectangleF结构体 33
2.4.4 Size和SizeF结构体 38
总结 39
第3章 Graphics类 40
3.1 Graphics类的属性 40
3.2 Graphics类的方法 41
3.2.1 绘制方法 41
3.2.2 填充方法 73
3.2.3 Graphics类的其他方法 80
3.3 GDI+ Painter应用程序 83
3.4 绘制饼图 90
总结 93
第4章 使用画笔和钢笔 95
4.1 理解和使用画笔 95
4.1.1 Brush类 96
4.1.2 Brushes类 97
4.1.3 实心画笔 97
4.1.4 阴影画笔 98
4.1.5 纹理画笔 105
4.1.6 渐变色画笔 108
4.2 在GDI+ 中使用钢笔 116
4.2.1 创建钢笔 117
4.2.2 Pen类的属性和方法 118
4.2.3 钢笔类型 118
4.2.4 钢笔示例 119
4.2.5 钢笔的对齐方式 121
4.2.6 LineCap、DashCap和DashStyle 124
4.2.7 通过应用线帽和虚线样式绘制其他图形 127
4.3 使用钢笔进行变形 129
4.4 使用画笔进行变形 131
4.5 系统钢笔和系统画笔 135
4.5.1 系统钢笔 135
4.5.2 系统画笔 136
4.6 一个真实世界的例子
——在GDI+ Painter应用程序中添加颜色、钢笔和画笔 138
4.6.1 改进GDI+ Painter 143
总结 143
第5章 颜色、字体和文本 144
5.1 访问Graphics对象 144
5.2 使用颜色 145
5.2.1 颜色空间 145
5.2.2 Color结构体 146
5.2.3 系统颜色 149
5.2.4 ColorConverter类和ColorTranslator类 152
5.3 使用字体 154
5.3.1 Windows中的字体类型 154
5.3.2 .NET中的字体 157
5.3.3 FontStyle枚举 157
5.3.4 FontFamily类 158
5.3.5 GraphicsUnit枚举 160
5.3.6 Font类 161
5.3.7 构造Font对象 163
5.4 使用文本和字符串 164
5.4.1 绘制格式文本 165
5.4.2 使用制表位 167
5.4.3 FormatFlags属性 169
5.4.4 设置数字替换 171
5.5 渲染文本的质量和性能 172
5.6 高级版式 173
5.6.1 获取系统中所有已安装的字体 174
5.6.2 私有字体集 174
5.7 一个简单的文本编辑器 177
5.8 文本变形 179
总结 181
第6章 矩形和区域 182
6.1 Rectangle结构体 183
6.1.1 构造Rectangle对象 183
6.1.2 构造RectangleF对象 184
6.1.3 Rectangle的属性和方法 184
6.2 Region类 188
6.2.1 构造Region对象 188
6.2.2 Complement、Exclude和Union方法 190
6.2.3 Xor和Intersect方法 191
6.2.4 GetBounds方法和其他方法 192
6.3 区域和剪辑 194
6.4 剪辑区域示例 196
6.5 区域、非矩形窗体和控件 198
6.5.1 应用程序 199
6.5.2 编写代码 200
总结 204
第7章 图像处理 205
7.1 光栅图像和矢量图像 205
7.1.1 光栅图像的格式 206
7.1.2 图形文件的格式 207
7.2 使用图像 208
7.2.1 一个图像查看器应用程序 208
7.2.2 创建Image对象 210
7.2.3 绘制图像 210
7.2.4 保存图像 214
7.2.5 检索图像的属性 216
7.3 操作图像 217
7.3.1 为图像创建缩略图 217
7.3.2 旋转和翻转图像 218
7.3.3 在图像查看器中添加选择和翻转选项 219
7.3.4 改变图像大小以适应边框 223
7.3.5 放大和缩小 228
7.4 在GDI+ 中播放动画 231
7.5 使用位图 234
7.5.1 创建Bitmap对象 234
7.5.2 查看Bitmap 235
7.5.3 Bitmap类的方法和属性 235
7.6 使用图标 239
7.7 扭曲图像 240
7.8 绘制透明的图形对象 243
7.9 查看多个图像 244
7.10 使用图片框查看图像 247
7.11 使用不同的大小保存图像 248
总结 250
第8章 高级图像处理 251
8.1 渲染位图的一部分 251
8.1.1 绘制灰度图像或其他颜色的图像 253
8.1.2 使用BitmapData更改像素格式 254
8.2 使用图元文件 257
8.2.1 Metafile类的方法 258
8.2.2 在程序中创建图元文件 258
8.2.3 增强的图元文件 260
8.2.4 使用图元文件的方式 261
8.2.5 读取图元文件头 263
8.3 使用颜色对象应用颜色映射 264
8.3.1 颜色重新映射表 264
8.3.2 颜色矩阵 266
8.3.3 颜色调色板 267
8.4 图像属性和ImageAttributes类 267
8.4.1 SetWrapMode方法 268
8.4.2 SetGamma方法 269
8.4.3 SetColorMatrix方法 269
8.4.4 SetNoOp和SetColorKey方法 272
8.4.5 SetThreshold方法 273
8.4.6 SetBrushRemapTable方法 273
8.4.7 Clear方法 274
8.5 编码器参数与图像格式 274
8.5.1 Encoder、EncoderCollection和Image的关系 275
8.5.2 Encoder类和EncoderParameter类 276
8.5.3 从数码图像或TIFF文件的标记数据检索信息 278
8.5.4 将位图转换为其他格式 279
总结 280
第9章 高级二维图形 281
9.1 线帽和线条样式 282
9.1.1 由Pen类指定的线帽和样式 283
9.1.2 添加线帽和样式 283
9.1.3 获取和设置线帽与线条样式 284
9.1.4 绘制其他使用线帽和样式的对象 287
9.1.5 自定义线帽 289
9.2 理解并使用图形路径 297
9.2.1 创建GrahpicsPath对象 297
9.2.2 具有形状的窗体和图形路径 299
9.2.3 GraphicsPath的属性和方法 300
9.2.4 子路径 302
9.2.5 图形路径迭代器 303
9.3 图形容器 305
9.3.1 理解图形的状态 306
9.3.2 保存和还原图形状态 309
9.3.3 使用图形容器 310
9.4 读取图像的元数据 314
9.5 混合 315
9.5.1 颜色混合 317
9.5.2 使用LinearGradientBrush对象进行混合 319
9.5.3 在渐变中添加多色支持 324
9.5.4 在线性渐变色画笔中使用伽玛校正 326
9.5.5 使用PathGradientBrush对象进行混合 328
9.6 Alpha混合 333
9.6.1 画笔、钢笔和Alpha混合 333
9.6.2 Alpha混合和图像 334
9.6.3 合成模式和混合 336
9.6.4 混合式混合 339
9.7 其他高级二维主题 341
9.7.1 区域数据 342
9.7.2 SmoothingMode和PixelOffsetMode枚举 342
总结 345
第10章 变形 346
10.1 坐标系统 347
10.2 变形的类型 351
10.3 Matrix类与变形 351
10.4 Graphics类与变形 360
10.5 全局变形、局部变形和复合变形 362
10.6 图像变形 365
10.7 颜色变形和颜色矩阵 368
10.7.1 ColorMatrix类 369
10.8 图像处理中的矩阵操作 370
10.8.1 平移颜色 370
10.8.2 缩放颜色 372
10.8.3 剪切颜色 373
10.8.4 旋转颜色 374
10.9 文本变形 377
10.10 变形顺序的重要性 379
总结 382
第11章 打印 384
11.1 简要地回顾使用Microsoft Windows进行打印的历史 384
11.1.1 惠普公司选择了标准 385
11.2 打印过程概述 386
11.2.1 绘图过程与打印过程之间的区别 386
11.2.2 打印过程的概念流 387
11.2.3 打印过程的程序流 388
11.2.4 System.Drawing.Printing名称空间 389
11.3 第一个打印应用程序 390
11.4 打印机的设置 392
11.4.1 PrinterSettings类 393
11.4.2 PaperSize类 397
11.4.3 PaperSource类 398
11.4.4 PrinterResolutionKind枚举 398
11.4.5 PrinterSettings集合类 398
11.4.6 一个打印机设置示例 399
11.5 PrintDocument和Print事件 403
11.5.1 理解打印事件 404
11.6 打印文本 408
11.7 打印图形 412
11.7.1 打印图形项 412
11.7.2 打印图像 414
11.8 打印对话框 417
11.8.1 PrintDialog控件 417
11.8.2 PageSetupDialog控件 418
11.8.3 PrintPreviewDialog控件 419
11.8.4 使用打印对话框 420
11.9 自定义页面设置 425
11.9.1 PageSettings类 426
11.9.2 页边距 426
11.9.3 创建自定义的纸张大小 426
11.9.4 PaperKind枚举 427
11.9.5 PaperSourceKind枚举 427
11.9.6 使用页面设置 427
11.9.7 PrintRange枚举 432
11.10 打印多个页面 433
11.10.1 DocumentName属性 437
11.11 页边打印——注意事项 437
11.12 进入细节——自定义控制和打印控制器 441
总结 445
第12章 开发GDI+ Web应用程序 446
12.1 创建第一个ASP.NET Web应用程序 447
12.1.1 创建一个Web应用程序项目 447
12.1.2 在Web Form上添加Web控件 449
12.1.3 编写按钮click事件处理程序的代码 450
12.2 第一个图形Web应用程序 451
12.2.1 工作原理 453
12.2.2 理解Save方法 454
12.3 绘制简单的图形 455
12.4 在Web上绘制图像 457
12.4.1 设置图像质量 458
12.4.2 使用LinearGradientBrush和PathGradientBrush 458
12.4.3 绘制透明的图形对象 459
12.5 绘制曲线图 461
12.5.1 ChartComp组件 461
12.5.2 客户端应用程序 464
12.6 绘制饼图 466
总结 469
第13章 GDI+ 的最佳实践及性能技术 470
13.1 理解渲染过程 470
13.1.1 理解paint事件 471
13.1.2 为窗体添加paint事件处理程序 471
13.1.3 为Windows控件添加paint事件处理程序 473
13.1.4 重载窗体的OnPaint方法 474
13.1.5 使用Visual Studio .NET添加paint事件处理程序 475
13.1.6 释放图形对象 475
13.1.7 OnPaintBackground方法 476
13.1.8 变量和性能的范围和类型 476
13.2 双缓存和无抖动绘图 478
13.3 理解SetStyle方法 480
13.4 绘图过程的质量与性能 482
13.4.1 只重新绘制所需的区域 482
13.4.2 使用图形路径 482
13.4.3 谨慎地选择方法 484
13.4.4 避免使用频繁调用的事件 485
13.4.5 使用系统画笔和钢笔 485
13.4.6 避免图像的自动缩放 487
总结 487
第14章 GDI互操作性 488
14.1 在受控环境中使用GDI 488
14.1.1 DllImportAttribute类 488
14.1.2 使用BitBlt函数 490
14.1.3 使用GDI打印功能 492
14.2 在受控代码中使用GDI的注意事项 496
14.2.1 不要在GetHdc和ReleaseHdc之间进行GDI调用 496
14.2.2 在位图所支持的GDI+ Graphics对象上使用GDI 497
总结 497
第15章 其他GDI+ 示例 498
15.1 设计交互式GUI应用程序 498
15.1.1 理解Control类 498
15.1.2 应用程序 499
15.1.3 绘制透明的控件 501
15.2 绘制具有形状的窗体和Windows控件 502
15.3 为绘制的图像添加版权信息 504
15.4 从流或数据库读取及写入图像 509
15.5 创建自绘制的列表控件 515
15.5.1 DrawItem事件 515
15.5.2 MeasureItem事件 515
15.5.3 自绘制ListBox控件 516
15.5.4 自绘制图像ListBox控件 518
总结 520
附录A .NET中的异常处理 521
A.1 为什么要进行异常处理 521
A.2 理解try...catch块 523
A.2.1 try...catch语句 523
A.2.2 try...catch...finally语句 524
A.2.3 嵌套的try...catch语句 526
A.2.4 一条try语句对应多条catch语句 527
A.3 理解异常类 529
A.3.1 Exception类——所有异常的基类 529
A.3.2 其他异常类 530
总结 533
1.1 理解GDI+ 1
1.1.1 定义 1
1.1.2 什么是GDI+ 2
1.1.3 .NET Framework中的GDI+ 库 3
1.1.4 GDI+ 为GDI程序员提供了哪些新特性 4
1.2 探索GDI+ 的功能 5
1.2.1 二维矢量图形程序设计 5
1.2.2 图像处理 5
1.2.3 版式 6
1.2.4 打印 6
1.2.5 设计 6
1.3 从GDI的角度学习GDI+ 6
1.3.1 不再使用句柄和设备上下文 6
1.3.2 面向对象的方法 8
1.3.3 图形对象的独立性 8
1.3.4 方法重载 9
1.3.5 绘制和填充方法 9
1.3.6 区域及其样式 10
1.4 .NET中的GDI+ 名称空间和类 10
1.4.1 System.Drawing名称空间 11
1.4.2 System.Drawing.Design名称空间 12
1.4.3 System.Drawing.Drawing2D名称空间 12
1.4.4 System.Drawing.Imaging名称空间 12
1.4.5 System.Drawing.Printing名称空间 13
1.4.6 System.Drawing.Text名称空间 13
总结 16
第2章 第一个GDI+ 应用程序 17
2.1 绘制表面 17
2.1.1 窗体表面 19
2.1.2 打印机表面 19
2.1.3 位图表面 19
2.2 坐标系统 19
2.2.1 笛卡儿坐标系统 19
2.2.2 默认的GDI+ 坐标系统 20
2.3 指南——第一个GDI+ 应用程序 21
2.3.1 创建一个Windows应用程序 21
2.3.2 添加一个对GDI+ 的引用 22
2.3.3 在应用程序中获取一个Graphics对象 23
2.3.4 创建钢笔和画笔 25
2.3.5 绘制图形 26
2.3.6 释放对象 27
2.3.7 生成并运行应用程序 28
2.4 一些基本的GDI+ 对象 28
2.4.1 Color结构体 29
2.4.2 Point和PointF结构体 29
2.4.3 Rectangle和RectangleF结构体 33
2.4.4 Size和SizeF结构体 38
总结 39
第3章 Graphics类 40
3.1 Graphics类的属性 40
3.2 Graphics类的方法 41
3.2.1 绘制方法 41
3.2.2 填充方法 73
3.2.3 Graphics类的其他方法 80
3.3 GDI+ Painter应用程序 83
3.4 绘制饼图 90
总结 93
第4章 使用画笔和钢笔 95
4.1 理解和使用画笔 95
4.1.1 Brush类 96
4.1.2 Brushes类 97
4.1.3 实心画笔 97
4.1.4 阴影画笔 98
4.1.5 纹理画笔 105
4.1.6 渐变色画笔 108
4.2 在GDI+ 中使用钢笔 116
4.2.1 创建钢笔 117
4.2.2 Pen类的属性和方法 118
4.2.3 钢笔类型 118
4.2.4 钢笔示例 119
4.2.5 钢笔的对齐方式 121
4.2.6 LineCap、DashCap和DashStyle 124
4.2.7 通过应用线帽和虚线样式绘制其他图形 127
4.3 使用钢笔进行变形 129
4.4 使用画笔进行变形 131
4.5 系统钢笔和系统画笔 135
4.5.1 系统钢笔 135
4.5.2 系统画笔 136
4.6 一个真实世界的例子
——在GDI+ Painter应用程序中添加颜色、钢笔和画笔 138
4.6.1 改进GDI+ Painter 143
总结 143
第5章 颜色、字体和文本 144
5.1 访问Graphics对象 144
5.2 使用颜色 145
5.2.1 颜色空间 145
5.2.2 Color结构体 146
5.2.3 系统颜色 149
5.2.4 ColorConverter类和ColorTranslator类 152
5.3 使用字体 154
5.3.1 Windows中的字体类型 154
5.3.2 .NET中的字体 157
5.3.3 FontStyle枚举 157
5.3.4 FontFamily类 158
5.3.5 GraphicsUnit枚举 160
5.3.6 Font类 161
5.3.7 构造Font对象 163
5.4 使用文本和字符串 164
5.4.1 绘制格式文本 165
5.4.2 使用制表位 167
5.4.3 FormatFlags属性 169
5.4.4 设置数字替换 171
5.5 渲染文本的质量和性能 172
5.6 高级版式 173
5.6.1 获取系统中所有已安装的字体 174
5.6.2 私有字体集 174
5.7 一个简单的文本编辑器 177
5.8 文本变形 179
总结 181
第6章 矩形和区域 182
6.1 Rectangle结构体 183
6.1.1 构造Rectangle对象 183
6.1.2 构造RectangleF对象 184
6.1.3 Rectangle的属性和方法 184
6.2 Region类 188
6.2.1 构造Region对象 188
6.2.2 Complement、Exclude和Union方法 190
6.2.3 Xor和Intersect方法 191
6.2.4 GetBounds方法和其他方法 192
6.3 区域和剪辑 194
6.4 剪辑区域示例 196
6.5 区域、非矩形窗体和控件 198
6.5.1 应用程序 199
6.5.2 编写代码 200
总结 204
第7章 图像处理 205
7.1 光栅图像和矢量图像 205
7.1.1 光栅图像的格式 206
7.1.2 图形文件的格式 207
7.2 使用图像 208
7.2.1 一个图像查看器应用程序 208
7.2.2 创建Image对象 210
7.2.3 绘制图像 210
7.2.4 保存图像 214
7.2.5 检索图像的属性 216
7.3 操作图像 217
7.3.1 为图像创建缩略图 217
7.3.2 旋转和翻转图像 218
7.3.3 在图像查看器中添加选择和翻转选项 219
7.3.4 改变图像大小以适应边框 223
7.3.5 放大和缩小 228
7.4 在GDI+ 中播放动画 231
7.5 使用位图 234
7.5.1 创建Bitmap对象 234
7.5.2 查看Bitmap 235
7.5.3 Bitmap类的方法和属性 235
7.6 使用图标 239
7.7 扭曲图像 240
7.8 绘制透明的图形对象 243
7.9 查看多个图像 244
7.10 使用图片框查看图像 247
7.11 使用不同的大小保存图像 248
总结 250
第8章 高级图像处理 251
8.1 渲染位图的一部分 251
8.1.1 绘制灰度图像或其他颜色的图像 253
8.1.2 使用BitmapData更改像素格式 254
8.2 使用图元文件 257
8.2.1 Metafile类的方法 258
8.2.2 在程序中创建图元文件 258
8.2.3 增强的图元文件 260
8.2.4 使用图元文件的方式 261
8.2.5 读取图元文件头 263
8.3 使用颜色对象应用颜色映射 264
8.3.1 颜色重新映射表 264
8.3.2 颜色矩阵 266
8.3.3 颜色调色板 267
8.4 图像属性和ImageAttributes类 267
8.4.1 SetWrapMode方法 268
8.4.2 SetGamma方法 269
8.4.3 SetColorMatrix方法 269
8.4.4 SetNoOp和SetColorKey方法 272
8.4.5 SetThreshold方法 273
8.4.6 SetBrushRemapTable方法 273
8.4.7 Clear方法 274
8.5 编码器参数与图像格式 274
8.5.1 Encoder、EncoderCollection和Image的关系 275
8.5.2 Encoder类和EncoderParameter类 276
8.5.3 从数码图像或TIFF文件的标记数据检索信息 278
8.5.4 将位图转换为其他格式 279
总结 280
第9章 高级二维图形 281
9.1 线帽和线条样式 282
9.1.1 由Pen类指定的线帽和样式 283
9.1.2 添加线帽和样式 283
9.1.3 获取和设置线帽与线条样式 284
9.1.4 绘制其他使用线帽和样式的对象 287
9.1.5 自定义线帽 289
9.2 理解并使用图形路径 297
9.2.1 创建GrahpicsPath对象 297
9.2.2 具有形状的窗体和图形路径 299
9.2.3 GraphicsPath的属性和方法 300
9.2.4 子路径 302
9.2.5 图形路径迭代器 303
9.3 图形容器 305
9.3.1 理解图形的状态 306
9.3.2 保存和还原图形状态 309
9.3.3 使用图形容器 310
9.4 读取图像的元数据 314
9.5 混合 315
9.5.1 颜色混合 317
9.5.2 使用LinearGradientBrush对象进行混合 319
9.5.3 在渐变中添加多色支持 324
9.5.4 在线性渐变色画笔中使用伽玛校正 326
9.5.5 使用PathGradientBrush对象进行混合 328
9.6 Alpha混合 333
9.6.1 画笔、钢笔和Alpha混合 333
9.6.2 Alpha混合和图像 334
9.6.3 合成模式和混合 336
9.6.4 混合式混合 339
9.7 其他高级二维主题 341
9.7.1 区域数据 342
9.7.2 SmoothingMode和PixelOffsetMode枚举 342
总结 345
第10章 变形 346
10.1 坐标系统 347
10.2 变形的类型 351
10.3 Matrix类与变形 351
10.4 Graphics类与变形 360
10.5 全局变形、局部变形和复合变形 362
10.6 图像变形 365
10.7 颜色变形和颜色矩阵 368
10.7.1 ColorMatrix类 369
10.8 图像处理中的矩阵操作 370
10.8.1 平移颜色 370
10.8.2 缩放颜色 372
10.8.3 剪切颜色 373
10.8.4 旋转颜色 374
10.9 文本变形 377
10.10 变形顺序的重要性 379
总结 382
第11章 打印 384
11.1 简要地回顾使用Microsoft Windows进行打印的历史 384
11.1.1 惠普公司选择了标准 385
11.2 打印过程概述 386
11.2.1 绘图过程与打印过程之间的区别 386
11.2.2 打印过程的概念流 387
11.2.3 打印过程的程序流 388
11.2.4 System.Drawing.Printing名称空间 389
11.3 第一个打印应用程序 390
11.4 打印机的设置 392
11.4.1 PrinterSettings类 393
11.4.2 PaperSize类 397
11.4.3 PaperSource类 398
11.4.4 PrinterResolutionKind枚举 398
11.4.5 PrinterSettings集合类 398
11.4.6 一个打印机设置示例 399
11.5 PrintDocument和Print事件 403
11.5.1 理解打印事件 404
11.6 打印文本 408
11.7 打印图形 412
11.7.1 打印图形项 412
11.7.2 打印图像 414
11.8 打印对话框 417
11.8.1 PrintDialog控件 417
11.8.2 PageSetupDialog控件 418
11.8.3 PrintPreviewDialog控件 419
11.8.4 使用打印对话框 420
11.9 自定义页面设置 425
11.9.1 PageSettings类 426
11.9.2 页边距 426
11.9.3 创建自定义的纸张大小 426
11.9.4 PaperKind枚举 427
11.9.5 PaperSourceKind枚举 427
11.9.6 使用页面设置 427
11.9.7 PrintRange枚举 432
11.10 打印多个页面 433
11.10.1 DocumentName属性 437
11.11 页边打印——注意事项 437
11.12 进入细节——自定义控制和打印控制器 441
总结 445
第12章 开发GDI+ Web应用程序 446
12.1 创建第一个ASP.NET Web应用程序 447
12.1.1 创建一个Web应用程序项目 447
12.1.2 在Web Form上添加Web控件 449
12.1.3 编写按钮click事件处理程序的代码 450
12.2 第一个图形Web应用程序 451
12.2.1 工作原理 453
12.2.2 理解Save方法 454
12.3 绘制简单的图形 455
12.4 在Web上绘制图像 457
12.4.1 设置图像质量 458
12.4.2 使用LinearGradientBrush和PathGradientBrush 458
12.4.3 绘制透明的图形对象 459
12.5 绘制曲线图 461
12.5.1 ChartComp组件 461
12.5.2 客户端应用程序 464
12.6 绘制饼图 466
总结 469
第13章 GDI+ 的最佳实践及性能技术 470
13.1 理解渲染过程 470
13.1.1 理解paint事件 471
13.1.2 为窗体添加paint事件处理程序 471
13.1.3 为Windows控件添加paint事件处理程序 473
13.1.4 重载窗体的OnPaint方法 474
13.1.5 使用Visual Studio .NET添加paint事件处理程序 475
13.1.6 释放图形对象 475
13.1.7 OnPaintBackground方法 476
13.1.8 变量和性能的范围和类型 476
13.2 双缓存和无抖动绘图 478
13.3 理解SetStyle方法 480
13.4 绘图过程的质量与性能 482
13.4.1 只重新绘制所需的区域 482
13.4.2 使用图形路径 482
13.4.3 谨慎地选择方法 484
13.4.4 避免使用频繁调用的事件 485
13.4.5 使用系统画笔和钢笔 485
13.4.6 避免图像的自动缩放 487
总结 487
第14章 GDI互操作性 488
14.1 在受控环境中使用GDI 488
14.1.1 DllImportAttribute类 488
14.1.2 使用BitBlt函数 490
14.1.3 使用GDI打印功能 492
14.2 在受控代码中使用GDI的注意事项 496
14.2.1 不要在GetHdc和ReleaseHdc之间进行GDI调用 496
14.2.2 在位图所支持的GDI+ Graphics对象上使用GDI 497
总结 497
第15章 其他GDI+ 示例 498
15.1 设计交互式GUI应用程序 498
15.1.1 理解Control类 498
15.1.2 应用程序 499
15.1.3 绘制透明的控件 501
15.2 绘制具有形状的窗体和Windows控件 502
15.3 为绘制的图像添加版权信息 504
15.4 从流或数据库读取及写入图像 509
15.5 创建自绘制的列表控件 515
15.5.1 DrawItem事件 515
15.5.2 MeasureItem事件 515
15.5.3 自绘制ListBox控件 516
15.5.4 自绘制图像ListBox控件 518
总结 520
附录A .NET中的异常处理 521
A.1 为什么要进行异常处理 521
A.2 理解try...catch块 523
A.2.1 try...catch语句 523
A.2.2 try...catch...finally语句 524
A.2.3 嵌套的try...catch语句 526
A.2.4 一条try语句对应多条catch语句 527
A.3 理解异常类 529
A.3.1 Exception类——所有异常的基类 529
A.3.2 其他异常类 530
总结 533
猜您喜欢