hDeskTop = GetDesktopWindow();// 获取桌面窗口句柄
hDeskTopDC =GetDC(hDeskTop);//获取桌面窗口DC
hMemDc = CreateCompatibleDC(hDesktopDC);//建立与桌面窗口DC兼容得内存设备上下文DC
绘图:
CDC *pDC =GetDC();//获取窗口DC
CDC MemDC; //定义一个显示设备对象
CBitmap MemBitmap; //定义一个位图对象
MemDC.CreateCompatibleDC(pDC);//建立窗口显示兼容得内存显示设备
这时还不能画图,需要建立一个能画画得位图。
MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);//建立与窗口兼容得位图。大小根据实际情况指定。
//将位图选入到内存显示设备中。只有选入了位图的内存显示设备才有地方绘图。画到指定的位图上。
CBitmap *pOldBit = MemDC.SelectObject(&MemBitmap);
//设置字体、画笔、画刷等。
//清楚一下背景
MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));
//绘图 画线、写字、绘制图片、画圆等。。。
MemDC.MoveTo(...);
MemDC.LineTo(...);
//将内存中的图拷贝到屏幕上进行显示
pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);
//绘图完成进行清理
MemDC.SelectObject(*pOldBit) ;
MemBitMap.DeleteObject();
MemDC.DeleteDC();
ReleaseDc(pDc);
GDI+
VC使用GDI+初始化准备工作
#include “gdiplus.h”
using namespace Gdiplus;
#pragma commet(lib,"gidplus.lib")
//在CWinApp派生类的InitInstance函数中加入:
//初始化gdiplus的环境
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
//初始化GDI+
GdiplusStartup(&gdiplusToken,&gdiplusStartupInput);
//在CWinApp派生类的ExitInstance函数中加入:
//关闭gdiplus的环境
GdiplusShutdown(gdiplusToken);
GDI+ API包含54个类、12个函数、6类(226个)图像常量、55种枚举和19中结构。