用Visual C++.NET进行GDI+编程

GDI+接口是Microsoft Whistler操作系统中的一部分,它是GDI的一个新版本,不仅在GDI基础上添加许多新特性而且对原有的GDI功能进行优化。在为开发人员提供的二维矢量图形、文本、图像处理、区域、路径以及图形数据矩阵等方面构造了一系列相关的类,如Bitmap(位图类)、Brush(画刷类)、Color(颜色类)、Font(字体类)、Graphics(图形类)、Image(图像类)、Pen(画笔类)和Region(区域类)等。其中,图形类Graphics是GDI+接口中的一个核心类,许多绘图操作都可用它来完成。

我们首先介绍一下GDI+的新特性以及其编程方式的改变,然后介绍用Visual C++.NET在基于对话框和单文档/多文档等应用程序中使用GDI+的一般方法。

GDI+新特性

GDI+与GDI相比,增加了下列新的特性:

1、渐变画刷

以往GDI实现颜色渐变区域的方法是通过使用不同颜色的线条来填充一个裁剪区域而达到的。现在GDI+拓展了GDI功能,提供线型渐变和路径渐变画刷来填充一个图形、路径和区域,甚至也可用来绘制直线、曲线等。这里的路径可以视为由各种绘图函数产生的轨迹。

2、样条曲线

对于曲线而言,最具实际意义的莫过于样条曲线。样条曲线是在生产实践的基础上产生和发展起来的。模线间的设计人员在绘制模线时,先按给定的数据将型值点准确地"点"到图板上。然后,采用一种称为"样条"的工具(一根富有弹性的有机玻璃条或木条),用压铁强迫它通过这些型值点,再适当调整这些压铁,让样条的形态发生变化,直至取得合适的形状,才沿着样条画出所需的曲线。如果我们把样条看成弹性细梁,那么压铁就可看成作用在这梁上的某些点上的集中力。GDI+的Graphics:: DrawCurve函数中就有一个这样的参数用来调整集中力的大小。除了样条曲线外,GDI+还支持原来GDI中的Bezier曲线。

3、持久的路径对象

我们知道,在GDI中,路径是隶属于一个设备环境(上下文),也就是说一旦设备环境指针超过它的有效期,路径也会被删除。而GDI+是使用Graphics对象来进行绘图操作,并将路径操作从Graphics对象分离出来,提供一个GraphicsPath类供用户使用。这就是说,我们不必担心路径对象会受到Graphics对象操作的影响,从而可以使用同一个路径对象进行多次的路径绘制操作。

4、矩阵和矩阵变换

在图形处理过程中常需要对其几何信息进行变换以便产生复杂的新图形,矩阵是这种图形几何变换最常用的方法。为了满足人们对图形变换的需求,GDI+提供了功能强大的Matrix类来实现矩阵的旋转、错切、平移、比例等变换操作,并且GDI+还支持Graphics图形和区域(Region)的矩阵变换。

5、Alpha混色

在图像处理中,Alpha用来衡量一个像素或图像的透明度。在非压缩的32位RGB图像中,每个像素是由四个部分组成:一个Alpha通道和三个颜色分量(R、G和B)。当Alpha值为0时,该像素是完全透明的,而当Alpha值为255时,则该像素是完全不透明。

Alpha混色是将源像素和背景像素的颜色进行混合,最终显示的颜色取决于其RGB颜色分量和Alpha值。它们之间的关系可用下列公式来表示:
显示颜色 = 源像素颜色 X alpha / 255 + 背景颜色 X (255 - alpha) / 255

GDI+的Color类定义了ARGB颜色数据类型,从而可以通过调整Alpha值来改变线条、图像等与背景色混合后的实际效果。

除了上述新特性外,GDI+还将支持重新着色、色彩修正、消除走样、元数据以及Graphics容器等特性。

时间: 2024-10-26 03:15:32

用Visual C++.NET进行GDI+编程的相关文章

基于Visual C++.NET的GDI+开发教程

GDI+接口是Microsoft Whistler操作系统中的一部分,它是GDI的一个新版本,不仅在GDI基础上添加许多新特性而且对原有的GDI功能进行优化.在为开发人员提供的二维矢量图形.文本.图像处理.区域.路径以及图形数据矩阵等方面构造了一系列相关的类,如Bitmap(位图类).Brush(画刷类).Color(颜色类).Font(字体类).Graphics(图形类).Image(图像类).Pen(画笔类)和Region(区域类)等.其中,图形类Graphics是GDI+接口中的一个核心类

Visual C#资源文件编程--使用资源文件 <zt>-Windows开发-.NET

在<Visual C#资源文件编程--创建资源文件>中已经介绍了如何用Visual C#创建资源文件.本文将接着上篇文章的话题来探讨资源文件另外一个问题,在Visual C#如何使用资源文件.在上一篇文章中,我们已经成功的创建了一个名称为"My.resources"的资源文件.这个资源文件中包含有一个图标资源,在文件中的名称为"demo.ico",若干个图片资源和一个字符串资源,在文件中的名称为"MyStr".我们将以上一篇文章创建的

Visual C++.NET GDI+编程基础

GDI+提供从简单到复杂图形绘制的大量方法,并且我们可以通过对路径和区域的操作构造出更复杂的图形,这在CAD等场合极为有用.当然,在绘图之前我们有必要搞清一些基本内容,如坐标空间.画笔和画刷等. 坐标空间及其变换 在视图和窗口中绘图或定位总是在一个二维坐标系进行,依据作用方法的不同,坐标有多种表示方法,并且各种不同坐标之间可以相互转换. 1. 世界坐标系.设备坐标系和页面坐标系 GDI+为我们提供了三种坐标空间:世界坐标系.页面坐标系和设备坐标系. "世界坐标系"是应用程序用来进行图形

GDI+编程基础(一)GDI+ Vs GDI

本文配套源码 一.GDI GDI是位于应用程序与不同硬件之间的中间层,这种结构让程序员从直接处理不同硬件的工作中解放出来,把硬件间的差异交给了GDI处理.GDI通过将应用程序与不同输出设备特性相隔离,使Windows应用程序能够毫无障碍地在Windows支持的任何图形输出设备上运行.例如,我们可以在不改变程序的前提下,让能在Epson点式打印机上工作的程序也能在激光打印机上工作.它把windows系统中的图形输出转换成硬件命令然后发送给硬件设备.GDI是以文件的形式存储在系统中,系统需要输出图形

Visual C#中的多线程编程

visual|编程|多线程 C#是.Net平台的通用开发工具,它能够建造所有的.Net应用.在.Net中所有线程都运行在应用程序域(AppDomain)中,这也许让你想到Win32进程,实际上它们还是有很大的不同.应用程序域提供了一种安全而通用的处理单元,公共语言运行库可使用它来隔离应用程序.注意在.Net中应用程序的隔离是应用程序域而不是进程,在单个进程中可以存在几个应用程序域,而且线程可以跨越应用程序域的范围,某个线程中的方法可以调用另一个线程的方法,这样的话就不会造成进程间调用或进程间切换

Visual Basic.NET和GDI+共创图标编辑器

visual 如果想自己设计一个个性独特的ico图片,然后让它成为如"我的电脑","回收站"这样的图标该怎么做?就只有用一些专门的画图工具.因为windows的的画图程序无法创建ico文件.于是本人利用.net和GDI+就编写了一个这样的画图工具.虽然现在有很多文章都介绍了GDI+技术,但都只是纯粹的GDI+的简单应用的介绍,至少我还没有看见一篇利用GDI+开发一个完整软件或程序片段的文章. 这个程序实现了以下的功能:将BMP.JPG.jpeg.GIF..png..

GDI+编程(二)使用画笔

画笔常用于绘制图形的轮廓.GDI+的画笔除了具有常见的色彩和宽度属性外,还具有对齐方式,线帽,变换方式等属性.GDI+中通过Pen类来定义画笔对象. (一).构造与使用画笔 Pen(brush, width); //用颜色与线宽构造一个画笔 Pen(color, width); //用画刷与宽度构造一个画笔 例子: Pen pen(Color(255, 0, 0, 0),1);//用第一个构造函数.构造宽度为1的黑色画刷 graphics.DrawLine(&pen, 20, 10, 300,

VC++ GDI+编程的字体和文本绘制

字体是文字显示和打印的外观形式,它包括了文字的字样.风格和尺寸等多方面的属性.适当地选用不同的字体,可以大大地丰富文字的外在表现力.例如,把文字中某些重要的字句用较粗的字体显示,能够体现出突出.强调的意图.当然,文本输出时还可使用其格式化属性和显示质量来优化文本显示的效果. 字体属性和字体创建 字体的属性有很多,这里主要介绍字样.风格和尺寸三个主要属性. 字样是字符书写和显示时表现出的特定模式,例如,对于汉字,通常有宋体.楷体.仿宋.黑体.隶书以及幼圆等多种字样.GDI+是通过FontFamil

Visual Studio 2010:Office编程

Microsoft Office 为组织提供了一个最终用户非常熟悉的环境来快速创建业务应用程序.构建 Office 业务应用程序为组织提供了利用以下内容的大量机会:编辑客户关系管理 (CRM) 系统.将从业务线应用程序提取的数据前置.托管商业智能报告,以及很多其他可能性. 尽管 Office 开发为组织提供了很多有价值的机会,但是之前它也为这些应用程序的开发和部署提出了一些挑战.早期的托管语言版本也推动了使用 Office 创建应用程序的方式. 调用大量的 Office API 方法通常很难,因