VC ++处理图像指定颜色值的问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 10:50:09
void CZhouzhouView::OnRgngrow() //区域生长函数

{
CZhouzhouDoc* pDoc=GetDocument();
//获取设备DC
CDC*pDC=GetDC();
//获取种子一的RGB值
COLORREF clrSeed_I=pDC->GetPixel(pDoc->m_ptPoint_I);
//获取种子二的RGB值
COLORREF clrSeed_II=pDC->GetPixel(pDoc->m_ptPoint_II);
//释放资源
ReleaseDC(pDC);

if(pDoc->m_hDIB!=NULL)
{
if(pDoc->m_hProcDIB!=NULL)
GlobalFree(pDoc->m_hProcDIB);
pDoc->m_hProcDIB=(HDIB)CopyHandle(pDoc->m_hDIB);
RgnGrow(pDoc->m_hProcDIB,clrSeed_I,clrSeed_II);
pDoc->UpdateAllViews(NULL);
}

}

在书中说了,函数入口参数COLORREF clrSeed_I,COLORREF clrSeed_II,可通过CDC函数GetPixel()直接获取到图像中指定点的颜色值。

可是我编译后出现如下这两行语句的错误:
COLORREF clrSeed_I=pDC->GetPixel(pDoc->m_ptPoint_I);
COLORREF clrSeed_II=pDC->GetPixel(pDoc->m_ptPoint_II);
两个error C2664: 'unsigned long __thiscall CDC::GetPixel(struct tagPOINT) const' :

应该把m_ptPoint_I和m_ptPoint_II定义成
CPoint m_ptPoint_I, m_ptPoint_II;

主要是定义类型不匹配的问题,下次注意了,就不会出现这样的问题了。
另外,多看错误提示,根据提示内容,一般就可解决问题了。

祝你好运!

不知道你的m_ptPoint_I和m_ptPoint_II是怎么定义的,难道是int型吗。
这两个变量应定义成POINT型的。

你在文档类中定义的变量m_ptPoint_I和m_ptPoint_II是int型的吧,要改成CPoint型。比如说可以这样定义并初始化CPoint point(200,200);然后可以这样写:GetPixel(point); 或者GetPixel(point.x, point.y);