19,468
社区成员
发帖
与我相关
我的任务
分享
if(!m_bHadCreateDC)
{
gdiGetClientRect(m_rcClient);
m_MemDC.CreateCompatibleDC(pDC);
m_oldDataDC.CreateCompatibleDC(pDC);
//创建图像
//初始化屏幕位图
int with= GetSystemMetrics(SM_CXFULLSCREEN);
int heigh= GetSystemMetrics(SM_CYFULLSCREEN);
m_bmp.CreateCompatibleBitmap(pDC, with, heigh);
m_oldDataBmp.CreateCompatibleBitmap(pDC, with, heigh);
m_MemDC.SelectObject(&m_bmp);
m_oldDataDC.SelectObject(&m_oldDataBmp);
m_bHadCreateDC = true;
drawFilter(true);//第一次绘制,ture代表是绘制在m_MemDC,false代表绘制在m_oldDataDC
}
//将图像绘制到视图DC上
pDC->BitBlt(0,0,int(m_rcClient.Width),int(m_rcClient.Height),&m_MemDC,0,0,SRCCOPY);
调用缓冲代码
void FilterView::drawFilter(bool bChangeData)
{
//创建gra
Graphics drawGra(m_MemDC.GetSafeHdc());
if(bChangeData)
{
//设置绘制区域
setRectSize(drawGra);
//绘制背景
drawBackGround(drawGra);
m_oldDataDC.BitBlt(0,0,int(m_rcClient.Width),int(m_rcClient.Height),&m_MemDC,0,0,SRCCOPY);
}
else
m_MemDC.BitBlt(0,0,int(m_rcClient.Width),int(m_rcClient.Height),&m_oldDataDC,0,0,SRCCOPY);
}
记得给分[/quote]
if(!m_bHadCreateDC)这什么鬼,然后gdiGetClientRect(m_rcClient);这不是应该GetClientRect,分等我结贴会按均给[/quote]
m_bHadCreateDC 是否创建了dc ,是否已经创建缓冲。只创建一次。
gdiGetClientRect(m_rcClient); 这个是GDI+的Rect,这个只是把CRect 转换为Rect。