当前位置:C++技术网 > 资讯 > GDI+中的DrawImage函数示例

GDI+中的DrawImage函数示例

更新时间:2016-05-09 21:06:34浏览次数:1+次

DrawImage是GDI+的Graphics类显示图像的核心方法,它的重载函数有许多个。常用的一般重载函数有:
Status DrawImage( Image* image, INT x, INT y);

Status DrawImage( Image* image, const Rect& rect);

Status DrawImage( Image* image, const Point* destPoints, INT count);

Status DrawImage( Image* image, INT x, INT y, 
                               INT srcx, INT srcy, INT srcwidth, INT srcheight, Unit srcUnit);
其中,(x,y)用来指定图像image显示的位置,这个位置和image图像的左上角点相对应。rect用来指定被图像填充的矩形区域, destPoints和count分别用来指定一个多边形的顶点和顶点个数。若count为3时,则表示该多边形是一个平行四边形,另一个顶点由系统自动给出。此时,destPoints中的数据依次对应于源图像的左上角、右上角和左下角的顶点坐标。srcx、srcy、srcwidth 和srcheight用来指定要显示的源图像的位置和大小,srcUnit用来指定所使用的单位,默认时使用PageUnitPixel,即用像素作为度量单位。
调用和显示图像文件
在GDI+中调用和显示图像文件是非常容易的,一般先通过Image或Bitmap调入一个图像文件构造一个对象,然后调用Graphics::DrawImage方法在指定位置处显示全部或部分图像。例如下面的代码:
Graphics graphics(this->m_hWnd);
Image image(L"1.jpg");
CRect rect;
GetClientRect(rect);
graphics.DrawImage(&image,0, 0, rect.Width(),rect.Height());
这是一个基于对话框的GDI+工程,自从VS08之后,GDI+包就被包含到了编译器中,因此我们只要引入变量与头文件就行了。首先在stdafx.h头文件中:
#include "gdiplus.h"
using namespace Gdiplus;
#pragma comment(lib,"gdiplus.lib")
然后.cpp文件中添加变量(注意,不是对话框的cpp文件):
ULONG_PTR gdiplusToken;
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
然后,我们看看实现:

正如CImage类能够调整图片的质量一样,Image类也行。不过在这里,我们先不讲述。对于Image类,该类能够实现图片的略缩图,许多的软件就是利用Image来实现预览。
看个实例:
Graphics graphics(this->m_hWnd);
Image image(L"1.jpg");
Image *pThumbnail=image.GetThumbnailImage(50,50,NULL,NULL);//略缩图
graphics.DrawImage(pThumbnail,50,50);

这是一个50*50的预览图