在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繪製到屏幕上
轉自:http://blog.csdn.net/shuilan0066/article/details/8744226