程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> C++/MFC/GDI+——獲取Graphics中的圖像數據

C++/MFC/GDI+——獲取Graphics中的圖像數據

編輯:.NET實例教程

GDI+中的各種描畫方法雖然很好用,但如果想獲得一個Graphics中已經畫好的內容卻不那麼容易了。做了一些嘗試後,我用以下方法解決了這個問題。

  1. 首先,獲得源GraphicsHDC,這個通過GetHDC()就能得到。
  2. 然後建立一個CDC,通過Attach(HDC hdc)使一個CDC與剛剛獲取的HDC關聯。
  3. 再建立一個目標CDC。 

    CBitmap TempBmp;
    TempBmp.CreateCompatibleBitmap(pDC, /*圖片寬*/,  /*圖片高*/ );
    TempDC.SelectObject(TempBmp);
  4. 然後自然是Bitblt了。

到這裡,雖然已經基本完成了任務。但為了以後方便,我又做了點工作。

獲得目標DC的CBitmap對象。這個通過CDC的GetCurrentBitmap()就能得到。

建立一個Bitmap對象,注意是GDI+的Bitmap對象。通過BitmapHBITMAPHPALETTE)這個構造函數建立,後面的調色板直接給一個NULL就可以了。前面的HBITMAP也可以直接將CBitmap對象賦進去,這裡要注意到是,不是Cbitmap*而是CBitmap



Bitmap BitmapTemp = new Bitmap(TempBmp,NULL);

 

之後,這個Bitmap對象就可以自由的在GDI+中使用了。通過其Clone方法也可以方便的復制出任意個副本,注意釋放就行了。



BitmapTemp->Clone( 0, 0,  /*圖片寬*/,  /*圖片高*/, PixelFormat32bppARGB);

PixelFormat32bppARGB是圖像的格式。MSDN上有詳細的說明。

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved