天天看点

如何在vc的开发中使用GDI+?

这篇文章介绍VC6下如何使用GDI+开发。

1. 下载GDI+开发包,微软的网站可以下载到。大家找不到的话,可以在http://alantop.5166.info下载。或者找我索取均可。

2. 在VC中的include files 和 library files设置,并保证程序工作目录下有gdiplus.dll

3. 在stdafx.h中包含文件的最下面键入如下代码

#ifndef ULONG_PTR
#define ULONG_PTR unsigned long *
#endif

#include "gdiplus.h"

using namespace Gdiplus;      

4. 在视图类中声明成员变量

GdiplusStartupInput gdiplusStartupInput;

ULONG_PTR gdiplusToken;

5. 在构造函数中:

    GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

析构函数中:

GdiplusShutdown(gdiplusToken);      

6. OnDraw函数键入如下代码

注意下面的注释掉的代码是CDC和HDC如何获得,和他们互相如何转换的。

这里重要的是要提醒:

用GetDC()获得的CDC* dc一定要用ReleaseDC(dc)释放掉。

//      HDC   hdc;   
//     CDC   *dc=GetDC();   
//     hdc=dc->GetSafeHdc(); 
 


       
       Image image(L " c:\\china.jpg " );
        printf ( " The width of the image is %u.\n " ,  image . GetWidth());
        printf ( " The height of the image is %u.\n " ,  image . GetHeight()); 



        Graphics graphics(pDC -> GetSafeHdc());
        Pen      pen(Color( 255 ,   0 ,   0 ,   255 ));
        
        graphics . DrawLine( & pen ,   0 ,   0 ,   200 ,   100 );



       graphics . DrawImage( & image ,   0 ,   0 );

               graphics . DrawLine( & pen ,   0 ,   0 ,   200 ,   100 );



 //         ReleaseDC(dc);      

除非DC属于一个窗口类,ReleaseDC必须在画图后被调用。在任何时候只有5个一般的DC有效,如果没有释放,将阻止其他的应用程序访问DC.