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中結構。