C++控制台与GDI+(桌面上显示图片)

C++控制台与GDI+(桌面上显示图片)

VC6.0过时了,GDI+也算是过时的产品了,不过对于初学者来说还是蛮有学习意义的,而且网上存在很多GDI配置教程稍显杂乱,重点是很少有结合C++控制台来写的,正好最近需要做个demo需要用到这一块,可是很多知识都忘了。个人感觉写一篇博客确实有必要把能够在C++控制台下正常运行的程序编译出来的过程记录一下。

下面说一下GDI+的配置

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的使用。

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");

上述仅供学习使用,当然,内容也不是很完美,抛砖引玉,能够为大家提供帮助,定感荣幸。:)

你可能感兴趣的:(C++控制台与GDI+(桌面上显示图片))