GDI+使用步骤

相比较GDI,GDI+增加了渐变的画刷,支持多种图像格式等,不过最大的变化,还是编程模型上的变化。

GDI+使用了面向对象的思想,对接口进行了类封装,使用更加方便。

在应用程序中使用GDI+库应该遵循一下步骤:

  1.引入Gdiplus.h头文件,加上:using namespace Gdiplus;这样使用GDI+中的任何东西就不需要重新指定命名空间了。

//引入gdi+头文件
	#include <GdiPlus.h>
	using namespace Gdiplus;

  2.链接DLL的导入库Gdiplus.lib。在VS中有两种方法,一是直接在项目属性->链接->输入中填入Gdiplus.lib;二是直接使用编译器原语:#pragma comment(lib, "Gdiplus.lib")

	//导入GDI+的库
	#pragma comment(lib, "Gdiplus.lib")

  3.在调用任何GDI+函数前一定要调用GDI+库初始化函数GdiplusStartup(),初始化GDI+库。

GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
	//初始化gdi+
	GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

  4.在确定不需要使用任何GDI+函数并且所有GDI+对象均已销毁(变量超过了生存期),需要调用GDI+关闭函数GdiplusShutdown()。GDI+支持多线程,所以可以在任意一个线程中调用。

	//释放gdi+
	GdiplusShutdown(gdiplusToken);
5.在需要绘制的地方尽情的使用GDI+吧

CClientDC dc(this);
	//使用gdi+
	Graphics graphics(dc.GetSafeHdc());
	Image image(L"res/meinv.jpg");
	
	MoveWindow(0, 0, image.GetWidth(), image.GetHeight(), TRUE);
	graphics.DrawImage(&image, 0, 0, image.GetWidth(), image.GetHeight());

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容器等特性。

你可能感兴趣的:(GDI+,GIDPLUS)