日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CBitMap的用法 from http://www.cnblogs.com/toconnection/archive/2012/08/04/mfc.html

發布時間:2024/10/12 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CBitMap的用法 from http://www.cnblogs.com/toconnection/archive/2012/08/04/mfc.html 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CBitMap的用法

MFC提供了位圖處理的基礎類CBitmap,可以完成位圖(bmp圖像)的創建、圖像數據的獲取等功能。雖然功能比較少,但是在對位圖進行一些簡單的處理時,CBitmap類還是可以勝任的。很多人可能會采用一些現成的CDib類進行位圖的讀取與處理,我覺得必要性不大。因為他們完成的功能差不多。

??? 以下假設定義了數據成員:

??? CBitmap m_bitmap;

(1) 位圖的讀取

void LoadImage(CString fileName) { HBITMAP m_hBitmap;//位圖句柄 BITMAP bm;//存放位圖信息的結構

?? m_hBitmap = (HBITMAP)::LoadImage(NULL,fileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);?? //裝載位圖 ?? if(m_bitmap.m_hObject) ????? m_bitmap.DeleteObject(); ?? m_bitmap.Attach(m_hBitmap);//將句柄與CBitmap關聯起來 ?? m_bitmap.GetBitmap(&bm); ?? height = bm.bmHeight;//圖像的寬高 ?? width = bm.bmWidth;

widthBytes=bm.bmWidthBytes;//圖像一行數據所占的字節數

}

(2) 位圖的顯示

在OnDraw()或OnPaint()函數中調用:

//dx0,dy0,dx,dy為顯示目標位置的坐標和大小,

//sx0,sy0,sx,sy為圖像要顯示部分的起始坐標和大小

void DrawImage(int dx0, int dy0, int dx, int dy, int sx0, int sy0, int sx, int sy)

{ if(!m_bitmap.m_hObject) ?? return;

CClientDC dc(this);

CDC memDC; memDC.CreateCompatibleDC(&dc); CBitmap* pbmpOld = memDC.SelectObject(&m_bitmap);

dc.SetStretchBltMode(COLORONCOLOR);//設置拉伸模式,否則圖像會不清晰 dc.StretchBlt(dx0,dy0,dx,dy,&memDC,sx0,sy0,sx,sy,SRCCOPY);//繪制圖像 memDC.SelectObject(pbmpOld); memDC.DeleteDC();

}

(3) 位圖數據的獲取

以灰度轉化為例:

int size=height*widthBytes; BYTE *lpBits=new BYTE[size]; m_bitmap.GetBitmapBits(size,lpBits);//得到RGB數據

BYTE *lpGray=new BYTE[height*width];

int R, G, B;

for(int i=0;i<height;i++)

?? for(int j=0;j<width;j++)

?? {

????? B=lpBits[i*widthBytes+j*4];

????? G=lpBits[i*widthBytes+j*4+1];

????? R=lpBits[i*widthBytes+j*4+2];

????? lpGray[i*width+j]=(B+G+R)/3;//轉化為灰度

?? }

...

delete []lpBits;

delete []lpGray;

轉載于:https://www.cnblogs.com/songtzu/archive/2013/01/03/2842580.html

總結

以上是生活随笔為你收集整理的CBitMap的用法 from http://www.cnblogs.com/toconnection/archive/2012/08/04/mfc.html的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。