GDI+ 填充背景時,很多時候不起作用,GDI、GDI+配合運用

在ONDRAW中執行GDI+ 填充背景時,不起作用,不知道什麼原因

  1. Graphics graphics(pDC->GetSafeHdc());  
  2. Bitmap bmp(m_imgRec.Width(),m_imgRec.Height()); //第一步 創建與屏幕等大小的內存位圖  
  3. Graphics grbmp(&bmp);  
  4. SolidBrush backBrush(RGB(255,255,255));  
  5. grbmp.FillRectangle(&backBrush,0,0,m_imgRec.Width(),m_imgRec.Height());  //初始化內存位圖背景  
  6. 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());  使用這個對象畫圖


  1. CDC memDC;  
  2. CBitmap bm;  
  3. memDC.CreateCompatibleDC(pDC);  
  4. bm.CreateCompatibleBitmap(pDC,m_imgRec.Width(),m_imgRec.Height());  
  5. memDC.SelectObject(&bm);  
  6. memDC.FillRect(&m_imgRec,&m_backBrush); //填充背景  
  7.   
  8. Graphics grbmp(memDC.GetSafeHdc());     //創建內存DC的GDI+對象  
  9.   
  10. grbmp.DrawImage(m_pBmp,0,0,nWidth,nHeight); //在內存DC上繪圖  
  11.    pDC->BitBlt(0,0,m_imgRec.Width(),m_imgRec.Height(),&memDC,0,0,SRCCOPY); //內存DC繪製到屏幕上  

  轉自:http://blog.csdn.net/shuilan0066/article/details/8744226
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章