1.创建一个一个最简窗口(见前文)
2.在stdafx.h中添加对Gdi+的支持
#include<gdiplus.h>
#pragma comment(lib,"Gdiplus.lib")
using namespace Gdiplus;
在App类中添加三个私有成员
ULONG_PTR m_tokenGdiplus;
Gdiplus::GdiplusStartupInput input;
Gdiplus::GdiplusStartupOutput output;
在其InitInstance函数实现中添加
Status s=GdiplusStartup(&m_tokenGdiplus,&input,&output);
在其ExitInstance函数实现中添加
Gdiplus::GdiplusShutdowm(m_tokenGdiplus);
3.在CMainFrame类中添加私有成员
Image* img;
RectF rc{0,10,200,300};
4。在CMainFrame的构造函数中添加
img=Image::FromFile(_T("res/图片名"));//图片放在res文件内
4.在CMainFrame类中添加OnPaint()函数(类向导),修改OnPaint()函数
void CMainFrame::OnPaint()
{
HDC hdc = ::GetDC(GetSafeHwnd());
CDC* pDC = CClientDC::FromHandle(hdc);//获取窗口DC
CDC m_dcMemory;//缓冲DC
CBitmap bmp;//缓冲位图
bmp.CreateCompatibleBitmap(pDC, rc.Width,rc.Height);//创建位图
m_dcMemory.CreateCompatibleDC(pDC);//缓冲DC初始化
CBitmap* pOldBitmap = m_dcMemory.SelectObject(&bmp);//将位图和缓存DC关联
//gdi+绘图
Graphics gh(m_dcMemory.GetSafeHdc());
//绘图代码
{
gh.DrawImage(img, rc);
}
::BitBlt(hdc, 0, 0, rc.Width, rc.Height, m_dcMemory.GetSafeHdc(), 0, 0, SRCCOPY);//将缓存DC的内容复制到屏幕
ReleaseDC(pDC);//只有自己创建的CDC才能使用DeleteDC
m_dcMemory.SelectObject(pOldBitmap);
m_dcMemory.DeleteDC();//自己创建的
DeleteObject(bmp);
}
调试