GDI+是新一代的图形接口。如果要设计.NET Framework图形应用程序,就必须使用GDI+。本书是一本为.NET开发人员讲授如何编写Windows和Web图形应用程序的专著,书中全面介绍了GDI+和Windows图形程序设计的基本知识和GDI+图形程序设计的各个方面。\r\n 本书适合于开发GDI+图形应用程序的初、中级程序员阅读,书中给出了大量用C#语言编写的可重用示例代码,可以使读者更快地掌握书中所介绍的各种知识和概念。本书也可以作为大专院校相关课程的重要辅导教材。\r\n \r\n
第1章 GDI+ ——下一代图形接口 \r\n 1.1 理解GDI+ \r\n 1.2 探索GDI+ 的功能 \r\n 1.3 从GDI的角度学习GDI+ \r\n 1.4 .NET中的GDI+ 名称空间和类 \r\n 总结 \r\n第2章 第一个GDI+ 应用程序 \r\n 2.1 绘制表面 \r\n 2.2 坐标系统 \r\n 2.3 指南——第一个GDI+ 应用程序 \r\n 2.4 一些基本的GDI+ 对象 \r\n 总结 \r\n第3章 Graphics类 \r\n 3.1 Graphics类的属性 \r\n 3.2 Graphics类的方法 \r\n 3.3 GDI+ Painter应用程序 \r\n 3.4 绘制饼图 \r\n 总结 \r\n第4章 使用画笔和钢笔 \r\n 4.1 理解和使用画笔 \r\n 4.2 在GDI+ 中使用钢笔 \r\n 4.3 使用钢笔进行变形 \r\n 4.4 使用画笔进行变形 \r\n 4.5 系统钢笔和系统画笔 \r\n 4.6 一个真实世界的例子\r\n ——在GDI+ Painter应用程序中添加颜色、钢笔和画笔 \r\n 总结 \r\n第5章 颜色、字体和文本 \r\n 5.1 访问Graphics对象 \r\n 5.2 使用颜色 \r\n 5.3 使用字体 \r\n 5.4 使用文本和字符串 \r\n 5.5 渲染文本的质量和性能 \r\n 5.6 高级版式 \r\n 5.7 一个简单的文本编辑器 \r\n 5.8 文本变形 \r\n 总结 \r\n第6章 矩形和区域 \r\n 6.1 Rectangle结构体 \r\n 6.2 Region类 \r\n 6.3 区域和剪辑 \r\n 6.4 剪辑区域示例 \r\n 6.5 区域、非矩形窗体和控件 \r\n 总结 \r\n第7章 图像处理 \r\n 7.1 光栅图像和矢量图像 \r\n 7.2 使用图像 \r\n 7.3 操作图像 \r\n 7.4 在GDI+ 中播放动画 \r\n 7.5 使用位图 \r\n 7.6 使用图标 \r\n 7.7 扭曲图像 \r\n 7.8 绘制透明的图形对象 \r\n 7.9 查看多个图像 \r\n 7.10 使用图片框查看图像 \r\n 7.11 使用不同的大小保存图像 \r\n 总结 \r\n第8章 高级图像处理 \r\n 8.1 渲染位图的一部分 \r\n 8.2 使用图元文件 \r\n 8.3 使用颜色对象应用颜色映射 \r\n 8.4 图像属性和ImageAttributes类 \r\n 8.5 编码器参数与图像格式 \r\n 总结 \r\n第9章 高级二维图形 \r\n 9.1 线帽和线条样式 \r\n 9.2 理解并使用图形路径 \r\n 9.3 图形容器 \r\n 9.4 读取图像的元数据 \r\n 9.5 混合 \r\n 9.6 Alpha混合 \r\n 9.7 其他高级二维主题 \r\n 总结 \r\n第10章 变形 \r\n 10.1 坐标系统 \r\n 10.2 变形的类型 \r\n 10.3 Matrix类与变形 \r\n 10.4 Graphics类与变形 \r\n 10.5 全局变形、局部变形和复合变形 \r\n 10.6 图像变形 \r\n 10.7 颜色变形和颜色矩阵 \r\n 10.8 图像处理中的矩阵操作 \r\n 10.9 文本变形 \r\n 10.10 变形顺序的重要性 \r\n 总结 \r\n第11章 打印 \r\n 11.1 简要地回顾使用Microsoft Windows进行打印的历史 \r\n 11.2 打印过程概述 \r\n 11.3 第一个打印应用程序 \r\n 11.4 打印机的设置 \r\n 11.5 PrintDocument和Print事件 \r\n 11.6 打印文本 \r\n 11.7 打印图形 \r\n 11.8 打印对话框 \r\n 11.9 自定义页面设置 \r\n 11.10 打印多个页面 \r\n 11.11 页边打印——注意事项 \r\n 11.12 进入细节——自定义控制和打印控制器 \r\n 总结 \r\n第12章 开发GDI+ Web应用程序 \r\n 12.1 创建第一个ASP.NET Web应用程序 \r\n 12.2 第一个图形Web应用程序 \r\n 12.3 绘制简单的图形 \r\n 12.4 在Web上绘制图像 \r\n 12.5 绘制曲线图 \r\n 12.6 绘制饼图 \r\n 总结 \r\n第13章 GDI+ 的最佳实践及性能技术 \r\n 13.1 理解渲染过程 \r\n 13.2 双缓存和无抖动绘图 \r\n 13.3 理解SetStyle方法 \r\n 13.4 绘图过程的质量与性能 \r\n 总结 \r\n第14章 GDI互操作性 \r\n 14.1 在受控环境中使用GDI \r\n 14.2 在受控代码中使用GDI的注意事项 \r\n 总结 \r\n第15章 其他GDI+ 示例 \r\n 15.1 设计交互式GUI应用程序 \r\n 15.2 绘制具有形状的窗体和Windows控件 \r\n 15.3 为绘制的图像添加版权信息 \r\n 15.4 从流或数据库读取及写入图像 \r\n 15.5 创建自绘制的列表控件 \r\n 总结 \r\n附录A .NET中的异常处理 \r\n\r\n\r\n
.NET Framework是Microsoft公司于2002年初发布的一个全新的开发平台。Microsoft在.NET Framework中融入了未来的软件开发思想。GDI+ 是与.NET Framework中的图形设备接口进行交互的入口。如果要编写.NET图形应用程序,就必须使用GDI+。本书是一本专门介绍.NET Framework中的图形程序设计的专著。作者Mahesh Chand是一位资深的.NET顾问和两个流行的技术网站www.c-sharpcorner.com及www.mindcracker.com的创建者及管理员。他早在.NET的beta版本发布之前就开始对.NET进行研究,拥有丰富的.NET开发经验,并一直密切关注着.NET的发展。
本书首先介绍了GDI+ 的基本知识,GDI+相对于GDI的改进和新增的功能,以及GDI+与.NET Framework的关系;然后详尽介绍了使用GDI+ 编写Windows和Web图形应用程序的各个方面,包括GDI+ 的基本原理,使用钢笔和画笔绘制和填充各种图形和图像的方式,图形路径、渐变色画笔、变形、颜色混合等概念及应用,.NET中的打印过程,GDI+在Web图形应用程序中的应用,以及GDI互操作性等内容。在本书的最后,还介绍了在编写GDI+应用程序时需要注意的问题,以及优化GDI+ 应用程序性能的一些技巧和窍门等。
本书面向的读者是开发.NET Framework图形应用程序的初、中级程序员。如果你具有一些.NET编程经验,并且了解图形程序设计的相关概念,本书可以帮助你尽快掌握使用GDI+进行图形程序设计所需的知识和各种特性。而对于初学者来说,本书各章中所给出的大量实例,将帮助读者快速地掌握编写GDI+ 图形应用程序所需的各种基本知识和技能。书中示例的源代码都可以从网上下载,作者对这些示例都进行了详尽的测试,对于读者掌握本书的内容非常有帮助。
本书主要由韩江、李善开、谭丹丹等翻译,全书由韩江统一校稿。在翻译过程中,译者力求准确地反映原著的内容,但由于水平有限,书中难免有错误之处,敬请广大读者批评指正。
译者
2004.12
Mahesh Chand是一位.NET顾问和两个流行的社区网站www.c-sharpcorner.com及www.mindcracker.com的创建者及管理员。他在beta版本之前就已经开始研究.NET了。Mahesh还是《C##中的ADO.NET程序员指南》和《应用ADO.NET》两本书的作者。
通过将.NET Framework引入到程序设计领域,Microsoft改变了程序设计和程序员的观点和视野。与以前的编程环境不同,.NET Framework融入了未来的软件开发思想。除引入新的C#语言以及对Visual Basic .NET和其他语言的重大改进之外,.NET Framework还提供了许多新的工具和实用程序,这些工具和实用程序对于程序员非常有帮助。
相对于这些语言、工具和实用程序,.NET Framework库是.NET Framework的真正动力所在。它是一个面向对象的类库,其中定义了与各种编程技术交互的接口。任何为.NET Framework所设计的程序设计语言都可以访问这个库,这为程序员提供了极大的便利,因为不论使用什么语言,库中所定义的方法和属性都完全相同。
在.NET Framework库中定义的每个类都属于一个特定的名称空间。名称空间是一个逻辑单元,用于将特定的编程接口与其他接口分隔开。例如,System.Windows.Forms名称空间定义了用于Windows Forms开发的类。System.Data及其子名称空间定义了用于数据库开发(ADO.NET)的类。
GDI+是下一代图形设备接口,它是在System.Drawing及其子名称空间中定义的。本书将集中讨论如何使用Microsoft .NET Framework的GDI+ 和C#编写图形Windows和Web应用程序。
本书的读者
本书面向希望使用GDI+ 和C#编写.NET Framework图形应用程序的中级开发人员。我们将介绍以下这些主题:
什么是GDI+,它与GDI的区别是什么
GDI+ 的原理及它在.NET Framework库中的定义
如何在GDI+ 中绘制文本、直线、曲线、矩形、椭圆和其他图形
如何使用不同的颜色、样式和纹理来填充矩形、椭圆和其他封闭曲线
.NET中的绘图过程
查看和操作图像
Windows Forms和Web Forms与绘图过程的关系
如何编写基于Web的图形应用程序
.NET中的打印过程
图形对象、颜色和图像等的变形
交互式颜色混合和透明颜色
在.NET应用程序中使用GDI
编写GDI+ 应用程序时需要注意的问题
优化GDI+ 应用程序的性能
预备知识
在开始阅读本书之前,应该先掌握一些预备知识:
语言:本书中的代码是使用C#编写的,不过希望使用其他.NET Framework语言(包括Visual Basic .NET)编写GDI+ 应用程序的开发者也可以使用本书。由于C#和VB.NET共享相同的.NET Framework库,所以除语法之外各种语言之间并没有太多的区别。然而,有关C#或VB.NET的知识并不是必须的。如果你是一位C++开发者,在使用本书时你不会遇到任何困难。
架构:在开发和测试本书中的示例时,我使用的是Visual Studio .NET。读者应该了解有关Visual Studio .NET的知识和.NET Framework的基础知识。
图形程序设计的基础知识:对图形程序设计的基本了解有助于阅读本书,但这不是必须的。
GDI编程经验:具有GDI编程经验有助于阅读本书,但这不是必须的。
本书的特点
本书的作者自.NET出现时起就一直密切关注.NET的发展。
作者与.NET社区的关系非常紧密,并且具有丰富的真实世界.NET应用程序开发经验。
除了介绍与GDI+ 相关的名称空间和类之外,本书还采用了一种实用的方式,对所有的概念都进行了讨论。
本书几乎每一章都以一个真实世界的应用程序作为结尾,这些应用程序包括FirstWebApp、GDI+ Painter、ImageViewer等。
第13章将专门介绍与GDI+ 性能相关的技术,讨论我们在.NET中使用GDI+ 编写图形应用程序时应该执行的和避免的操作。
章节结构
在开始之前,让我们先快速地浏览一下本书的章节。本书共包括15章和一个附录。下面是对其内容的简单介绍:
第1章:GDI+——下一代图形接口
GDI+是一种新改进的GDI版本。本章将介绍GDI+ 库、它与以前版本相比的优点、库中新增的功能,以及它与.NET Framework的关系。
第2章:第一个GDI+ 应用程序
在.NET Framework库中,GDI+ 功能是在System.Drawing名称空间及其子名称空间中定义的。本章将讨论这些名称空间的内容。在结束本章之后,你将能够理解各名称空间中所定义的功能。
第3章:Graphics类
Graphics类在GDI+ 中扮演着一个重要的角色。只要绘制图形对象,就必须使用Graphics类。本章将讨论Graphics类的方法和属性及其使用方式。在阅读完本章之后,你将了解如何绘制和填充各种图形对象。
第4章:使用画笔和钢笔
画笔和钢笔用于填充和绘制图形对象。GDI+ 提供了许多与画笔和钢笔相关的类。本章将介绍如何使用这些类。
第5章:颜色、字体和文本
本章将详细讨论.NET Framework类库所提供的与颜色、字体和文本相关的类。
第6章:矩形和区域
矩形和区域非常有用。本章将对其进行详细的介绍。
第7章:图像处理
.NET Framework将GDI+ 的功能分别处在两个名称空间之中,即System.Drawing和System.Drawing.Imaging。本章将介绍在System.Drawing名称空间中定义的与图像处理相关的基本功能。
第8章:高级图像处理
本章将讨论更多的图像处理功能,包括System.Drawing.Imaging名称空间及如何在.NET Framework中使用图元文件。我们还将介绍如何调整GDI+ 中图像的质量和渲染速度。
第9章:高级二维图形
本章将讨论如何使用GDI+ 进行高级二维图形程序设计。高级二维技术和工具包括混合、矩阵、图形路径和渐变色画笔。
第10章:变形
本章将介绍GDI+ 变形。变形不仅可以应用到图形、曲线和图像,还可以应用到图像颜色。
第11章:打印
.NET Framework库中的打印功能是在System.Drawing.Printing名称空间中定义的。本章将介绍这个名称空间以及如何编写打印应用程序。
第12章:开发GDI+ Web应用程序
GDI+还可以用于Web应用程序。本章将讨论如何在Web应用程序和ASP.NET中使用GDI+ 。
第13章:GDI+ 的最佳实践和性能技术
本章将介绍可改善绘图质量和性能的GDI+最佳实践和与GDI+相关的技巧及窍门。
第14章:GDI互操作性
本章将介绍如何在受控应用程序中同时使用GDI和GDI+。
第15章:其他GDI+ 示例
在本章中我们将介绍一些有趣的GDI+ 功能。本章的内容包括设计交互式GUI应用程序、创建具有形状的窗体以及在图像中添加自定义的文本。
附录A:.NET中的异常处理
本附录将介绍.NET中的异常和错误处理。
示例源代码
本书中例子的完整源代码(C#和Visual Basic .NET)可以从www.awprofessional.com/ titles/0321160770处下载。
示例中的异常和错误处理
.NET Framework支持与C++异常处理相似的结构化异常处理。本书中的例子不包括异常处理代码。在每个代码段中添加异常处理代码会降低代码的可读性,并使代码变得冗长。相反,我们将在附录A中讨论异常和错误处理的概念。强烈建议你阅读附录A,并在你的应用程序中应用异常和错误处理技术。
总结
引言介绍了本书的结构,并回答了关于本书的一些基本问题。在第1章中,你将学到GDI+的基本知识。我们将介绍以下主题:
什么是GDI+,为什么它好于以前的程序设计接口?
在.NET Framework中GDI+是如何设计和使用的?
与GDI相比,GDI+的主要优点是什么?
如何在.NET中使用GDI+编写第一个图形应用程序?
一些基本的图形概念是什么?