VC6.0过时了,GDI+也算是过时的产品了,不过对于初学者来说还是蛮有学习意义的,而且网上存在很多GDI配置教程稍显杂乱,重点是很少有结合C++控制台来写的,正好最近需要做个demo需要用到这一块,可是很多知识都忘了。个人感觉写一篇博客确实有必要把能够在C++控制台下正常运行的程序编译出来的过程记录一下。
下面说一下GDI+的配置
1、下载gdi+库文件,http://download.csdn.net/detail/s2392735818/8881167
免积分下载哦。
2、VC6.0中,打开Tools->Options->Directories,分别将GDIPlus文件夹下面的Includes文件夹,lib文件夹分别添加进去。
VS2010的配置可以看这个http://www.cnblogs.com/it20120227/archive/2011/12/31/2370903.html
3、接下来新建一个C++ Source File文件命名为paint.cpp,编译的时候,VC6.0会自动生成一个工程文件,下面需要再新建一个stdafx.h文件。
4、stdafx.h文件中需要添加
#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#endif
这一块代码是为了防止VC6无法识别ULONG_PTR类型
然后在stdafx.h中加入下面的代码,为当前工程引入头文件和库文件
#include
#pragma comment(lib, "gdiplus.lib")
5、接下来paint.cpp中添加全局变量
Gdiplus::GdiplusStartupInput m_gdiplusStartupInput;
ULONG_PTR m_pGdiToken;
和GDIPlus库命名空间
using namespace Gdiplus;
好了,GDIPlus的配置到此结束,接下来介绍GDIPlus的使用。
1、主函数中添加GDIPlus开启函数
Gdiplus::GdiplusStartup(&m_pGdiToken, &m_gdiplusStartupInput, NULL);
记住结束的时候需要执行GDIPlus关闭函数
Gdiplus::GdiplusShutdown(m_pGdiToken);
2、由于程序需要在桌面上直接显示图片,因此需要获得桌面句柄,在paint.cpp中加入头文件
#include
3、下面就是具体的实现过程了,直接贴代码
//获取桌面句柄
HWND m_hWnd = ::GetDesktopWindow();
//在内存中建立一个Image的派生类Bitmap对象做为"画布"
Bitmap memBitmap(512,512);
Graphics memGr(&memBitmap);
//这里可以通过memGr在memBitmap上绘制多个图元
Image* pimage=NULL;
pimage=Image::FromFile(L"shirt.png");
int w = 601; //这里是"shirt.png"的宽度
int h = 672; //这里是"shirt.png"的高度
memGr.DrawImage(pimage,0,0,0,0,w,h,UnitPixel);
delete pimage;
pimage=NULL;
HDC m_hDC = ::GetDC(0);//获取屏幕句柄
Graphics gr(m_hDC);
gr.DrawImage(&memBitmap,0,0);
::ReleaseDC(m_hWnd,m_hDC);
Gdiplus::GdiplusShutdown(m_pGdiToken);
system("pause");
上述仅供学习使用,当然,内容也不是很完美,抛砖引玉,能够为大家提供帮助,定感荣幸。:)