读书人

扫描窗口图像 欢迎解答阿^c^解决方

发布时间: 2012-03-18 13:55:39 作者: rapoo

扫描窗口图像 欢迎解答阿^c^
我想对窗口中显示的图像进行扫描,源程序是这样的,编译没有问题,但是显示总是有问题 请教各位阿
我的图片中有一个圆(RGB值都被置为0了),我想扫描获取每个象素点的RGB值,把每行象素数最多的记下来最为最大的半径,最后求圆心
对话框显示的总是-858993460
void CRobotFootballDoc::OnCoordinate()
{
m_Centre = m_display.DibBallcentre();
CDlgCoodinate dlg;
dlg.m_CircleX=m_Centre.x;
dlg.m_CircleY=m_Centre.y;
dlg.DoModal();
}
///////////////////////////////////////////////////////////
CPoint CDib::DibBallcentre()
{
CPoint CircleCentre;
inty=0,hight=DibHeight();
intx=0,width=DibWidth();
COLORREF pointRGB;
int MaxH=0,MaxV=0;
// HDC hDC = ::GetDC(NULL);

for(y;y <=hight;y++)
{
int sum=0;
for(x;x <=width;x++)
{
HDC hDC = ::GetDC(0);
pointRGB=GetPixel(hDC,x,y);
BYTE R=GetRValue(pointRGB);
BYTE G=GetGValue(pointRGB);
BYTE B=GetBValue(pointRGB);
if(R=G=B=0)
{
sum+=1;
}
::ReleaseDC(0,hDC);
}
if(MaxH <sum)
{
MaxH=sum;
CircleCentre.y=y;
}
}

for(x;x <=width;x++)
{
int sum=0;
for(y;y <=hight;y++)
{
HDC hDC = ::GetDC(0);
pointRGB=GetPixel(hDC,x,y);
BYTE R=GetRValue(pointRGB);
BYTE G=GetGValue(pointRGB);
BYTE B=GetBValue(pointRGB);
if(R=G=B=0)
{
sum+=1;
}
::ReleaseDC(0,hDC);
}
if(MaxV <sum)
{
MaxV=sum;
CircleCentre.x=x;
}
}
// ::ReleaseDC(0,hDC);
return CircleCentre;
}
///////////////////////////////
帮我看看是什么问题啊 ,我初学VC有好多问题不知道怎么解决,希望师兄师姐多多指点阿,谢谢!

[解决办法]
if(R=G=B=0)
楼主确信是=不是==?

还有,你所说的那个数字像是为初始化的随机数,在你程序的哪部分?说清楚

读书人网 >C++

热点推荐