void CXXXButton::OnPaint()
{
CPaintDC dc(this);
CRect rect;
this->GetClientRect(&rect);
int imageW = m_pImage->GetWidth(); //m_pImage你自己的成员变量,自己去定义吧。
int imageH = m_pImage->GetHeight();
CImage memImg; //创建CImage缓存
memImg.Create(rect.Width(), rect.Height(), m_pImage->GetBPP());
HDC tmpdc = memImg.GetDC();
CDC memDC;
memDC.Attach(tmpdc);
//使用 memDC 开始
memDC.FillSolidRect(rect, RGB(255, 255, 255));
m_pImage->Draw(tmpdc, 0, 0, imageW/m_nStates, imageH, imageW*0/m_nStates, 0, imageW/m_nStates, imageH);
//使用 memDC 结束
memImg.Draw(dc.m_hDC, 0, 0, rect.Width(), rect.Height()); //将CImage缓存贴到dc上
memDC.Detach(); //释放这两个,不释放crash
memImg.ReleaseDC();
}
使用CImage双缓冲
最新推荐文章于 2020-05-18 17:14:31 发布