在ONDRAW中执行GDI+ 填充背景时,不起作用,不知道什么原因
Graphics graphics(pDC->GetSafeHdc()); Bitmap bmp(m_imgRec.Width(),m_imgRec.Height()); //第一步 创建与屏幕等大小的内存位图 Graphics grbmp(&bmp); SolidBrush backBrush(RGB(255,255,255)); grbmp.FillRectangle(&backBrush,0,0,m_imgRec.Width(),m_imgRec.Height()); //初始化内存位图背景 graphics.DrawImage(&bmp,m_imgRec.left,m_imgRec.top,m_imgRec.Width(),m_imgRec.Height()); //第二步 将等屏幕大小内存位图绘制到屏幕上
既然这样不行,就用GDI配合GDI+使用
创建memDC, CBitmap资源, 使用memDC直接填充, 然后创建内存DC 的GDI+ 对象 Graphics grbmp(memDC.GetSafeHdc()); 使用这个对象画图
CDC memDC; CBitmap bm; memDC.CreateCompatibleDC(pDC); bm.CreateCompatibleBitmap(pDC,m_imgRec.Width(),m_imgRec.Height()); memDC.SelectObject(&bm); memDC.FillRect(&m_imgRec,&m_backBrush); //填充背景 Graphics grbmp(memDC.GetSafeHdc()); //创建内存DC的GDI+对象 grbmp.DrawImage(m_pBmp,0,0,nWidth,nHeight); //在内存DC上绘图 pDC->BitBlt(0,0,m_imgRec.Width(),m_imgRec.Height(),&memDC,0,0,SRCCOPY); //内存DC绘制到屏幕上