我是mfc初学者,以下是我写的一段代码,用来读取位图的r,g,b分量,并计算其平均值:
void CL1View::GetRGBSymbol(long RectX,long RectY,long& R,long& G,long& B,long resID)
{
CBitmap bmp;
bmp.LoadBitmap(resID);
CClientDC dc(this);
OnPrepareDC(&dc);
CDC mDC;
mDC.CreateCompatibleDC(&dc);
mDC.SelectObject(&bmp);
BITMAP bmpinfo;
::ZeroMemory(&bmpinfo,sizeof(bmpinfo));
bmp.GetBitmap(&bmpinfo);
CRect r(RectX,RectY,bmpinfo.bmWidth+RectX,bmpinfo.bmHeight+RectY);
dc.DPtoLP(&r);
r.OffsetRect(0,0);
dc.BitBlt(r.left,r.top,r.Size().cx,r.Size().cy,&mDC,0,0,SRCCOPY);
long n,i,x,y;
n=r.Size().cx*r.Size().cy;
for(x=0;x<r.Size().cx;x++)
for(y=0;y<r.Size().cy;y++)
{
c=dc.GetPixel(x,y);
R=R+GetRValue(c);
G=G+GetGValue(c);
B=B+GetBValue(c);
}
R=R/n;
G=G/n;
B=B/n;
}
在OnDraw函数中两次调用它,
GetRGBSymbol(0,0,R1,G1,B1,SampleID);
SampleID++;
ResourceID=SampleID;
GetLightSymbol(128,0,R2,G2,B2,ResourceID);
第一次结果是对的,但是第二次获得的分量就全为0了,这是什么原因呢?请达人指教!谢谢!