标题:
请教,弱弱的问,多谢!!!
[打印本页]
作者:
zaifengzhong
时间:
2005-7-4 22:37
标题:
请教,弱弱的问,多谢!!!
BOOL CDraw:
ointRgn(float x, float y, int Numble, PointStruct *PointList, float blc)
{
CRgn m_rgn; //定义一个CRgn类的对象rgn
int x1,y1,i;
BOOL pb;
POINT *bbcc; //定义一个点结构指针
if(Numble<3)
return FALSE;
bbcc=new POINT[Numble]; //给结构指针分配Numble个顶点
//将按中点的坐标转变成象素坐标
x1=(int)(x/blc);
y1=(int)(y/blc);
//将封闭区域各点的坐标转换成象素坐标
for(i=0;i<Numble;i++)
{
bbcc
.x=(int)(PointList
.x/blc);
bbcc
.y=(int)(PointList
.y/blc);
}
m_rgn.CreatePolygonRgn(bbcc,Numble,0); //初始化一个多边形区域
pb=m_rgn.PtInRegion(x1,y1);
if(pb)
return TRUE;
else
return FALSE;
m_rgn.DeleteObject(); //删除定义的rgn对象。
}
我在编译时没错误,可是运行时出错。调试时发现停止在pb=m_rgn.PtInRegion(x1,y1);这一行。我怀疑是这一行m_rgn.CreatePolygonRgn(bbcc,Numble,0); //初始化一个多边形区域 不成功,但有看不出哪错了,诸位帅哥,帮忙看下,非常感激
作者:
Nothing
时间:
2005-7-5 00:37
CreatePolygonRgn确实有错,应当使用CreatePolyPolygonRgn,后面的函数才支持数组。
作者:
zaifengzhong
时间:
2005-7-5 21:07
//PointRgn的作用:判断一个点是否在任意多边形区域内
参数:Numble——边界点数,x,y,是点的坐标,多边形顶点的坐标在结构数组PointList中
返回:True——点在多边形区域,False——不在区域内
我只是初始化一个多边形区域,而CreatePolyPolygonRgn函数是初始化一系列多边形区域。我这有本书说CreatePolygonRgn的完整定义是:
BOOL CreatePolygonRgn(LPPOINT lpPoints,int nCount,int nMode);
lop
作者:
zaifengzhong
时间:
2005-7-5 21:19
lpPoints指向一个POINT结构或CPoint数组,Count是顶点的数目,即表示多边形有多少个顶点,nMode是填充模式,可为ALTERNATE或WINDING.
按照这样说法应该没错呀。可是我也不知怎么改。
_AFXWIN_INLINE BOOL CRgn::CreatePolygonRgn(LPPOINT lpPoints, int nCount, int nMode)
{ return Attach(::CreatePolygonRgn(lpPoints, nCount, nMode)); }
程序执行到这一步时,应该都还正确,lpPoints的值为0x00443b80
BOOL CGdiObject::Attach(HGDIOBJ hObject)
{
ASSERT(m_hObject == NULL); // only attach once, detach on destroy
if (hObject == NULL)
return FALSE;
CHandleMap* pMap = afxMapHGDIOBJ(TRUE); //create map if not exist
ASSERT(pMap != NULL);
pMap->SetPermanent(m_hObject = hObject, this);
return TRUE;
}
到了ASSERT(m_hObject == NULL); 这一步时m_hObject的值为0x00000000
,应该也对。到下一步if (hObject == NULL)
return FALSE; 执行到这一句时, hObject的值为0x00000000,所以多边形就没有创建函数就返回了。我想问题就出在这里,也不知道是什么原因?
Nothing大哥是怎么认为呢?请多指教,小弟先谢过了。
作者:
zaifengzhong
时间:
2005-7-5 21:22
????
欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/)
Powered by Discuz! 6.0.0