使用CBITMAP类即DDB显示图像:
HBITMAP bmpHandle = (HBITMAP)LoadImage(NULL,
strPictureName,
IMAGE_BITMAP,
0,
0,
LR_LOADFROMFILE);
CBitmap bmpPicture;
CDC mdcPicture;
CBitmap *bmpFromHandle = bmpPicture.FromHandle(bmpHandle); CRect rctPicture;
m_Picture.GetWindowRect(&rctPicture); mdcPicture.CreateCompatibleDC(&dc);
CBitmap * bmpPrevious = mdcPicture.SelectObject(bmpFromHandle); ScreenToClient(&rctPicture); dc.BitBlt(rctPicture.left, rctPicture.top,
rctPicture.Width(), rctPicture.Height(),
&mdcPicture, 0, 0, SRCCOPY); dc.SelectObject(bmpPrevious);
DeleteObject(bmpHandle);
再用鼠标响应选取区域,得到两个CPoint变量,如何获取区域中的图像数据存成一个新的数组,再计算其均值!!!尽量说详细点,本人新学很多都不懂!

解决方案 »

  1.   

    图像大小已知,绘制图像的客户区大小已知,可以算出两个Cpoint在图像上的位置吧?(比如你的图像宽度100,用来绘制图像的客户区宽度50,那客户区上x值40的地方就是图像上x=80的地方~好理解吧?),位图格式如下:文件开始依次是BITMAPFILEHEADER+BITMAPINFOHEADER,两个结构体,然后是图像数据(24位位图为例,没有调色板),以BGR顺序存储,每三个字节表示一个像素,比如你的图像大小是64*64,那每行是3*64字节,图像上第i行j列(i,j从0开始)的点对应的字节就是(位图从最下面一行开始存):3*64*(64-i-1)+3*j,3*64*(64-i-1)+3*j + 1,3*64*(64-i-1)+3*j +2,三个字节~应该挺清楚了,希望对你有帮助
      

  2.   

    最好采用DIB位图,把鼠标的坐标转换为位图的坐标,然后取值。