怎样用VC求不规则多边形面积。我很急,谢谢!!!

解决方案 »

  1.   

    agree 回复人: hailong0108(汤姆) ( ) 信誉:111  2003-02-24 17:47:00  得分:0 
     
     用象素填充,计点拿一个多边形的外接矩形
    象素填充,看是否落在多边形内,计算点的个数
      
     
      

  2.   

    只要各边不交叉,绝对行。double dMj=0;//面积
    //n是点数加1,
    //x[0],y[0],x[1],y[1]...,x[n-1],y[n-1]分别是多边形按顺序排列的n个点的坐标。
    x[n] = x[0];//x[n]被赋值为x[0]是便于计算,x[n]并不是一个点的横坐标
    y[n] = y[0];
    for(int i=0; i<n; i++)
    {
        dMj += x[i]*y[i+1] - x[i+1]*y[i];
    }
    dMj = fabs(dMj)/2;
      

  3.   

    如果用象素填充法来算矢量图形的多边形面积,那可就惨了
    参考一下下面的:
    http://expert.csdn.net/Expert/topic/1025/1025922.xml?temp=.5344202用 xyw2278(启明星) 的方法也可以
      

  4.   

    不管多边形是什么样子的,它都是由一组直线封闭而成的,这样你就可以计算出所有这些端点里最左边的点的x坐标、最上边的点的y坐标、最右边的点的x坐标以及最下边的点的y坐标,这样这个多边形的外接矩形就知道了,然后用二次循环搜索所有在该矩形中的点是否也在这个多边形里,累计这些点就可以得到面积了,这个方法如同楼上萧遥的说法。
      

  5.   

    int CImageViewView::GetRgnArea()
    {
    int area = 0;
    int i,j;
    CRect rect;
    CPoint* m_points;
    int m_nPoints;
    CImageViewDoc* pDoc = GetDocument(); m_nPoints = pDoc->m_aryRectPoint.GetSize();
    m_points = new CPoint[m_nPoints];

    for(i = 0; i<m_nPoints ; i++)//获得所有顶点的位置
    {
    m_points[i] = pDoc->m_aryRectPoint[i]->m_ptPoint;
    } CRgn rgn;
    rgn.CreatePolygonRgn(m_points, m_nPoints, ALTERNATE);
    rgn.GetRgnBox(&rect);//获得一个包括该多边形的矩形 CPoint point;//计算矩形内的点落在多边形内的数量
    for( i = rect.top ; i<rect.bottom;i++)
    for( j = rect.left; j<rect.right ; j++)
    {
    point.x = j; point.y = i;
    if(rgn.PtInRegion(point))
    area ++;
    } delete[] m_points; return area;
    }
      

  6.   

    ctl2008(ctl) :楼上的只计算了多边形内的点数而非面积数字化的图形和图象的面积就是象素数,还有其他的吗?
      

  7.   

    用GDI+可以计算任意多边形的面积,我以前碰到过这个问题,请看:
    http://expert.csdn.net/Expert/TopicView1.asp?id=1846493
      

  8.   

    有一种求任意封闭区域面积的算法,是用方向链码来实现的。
     基本思想:边界跟踪得到区域边界点坐标及其方向链码;根据各点的方向码得到该点类型(左端点·右端点·尖点);逐行扫描,进行端点匹配。这样任意封闭区域面积都能算出。  以上只是介绍一种算法,对于任意多边形,则只要先获得各顶点坐标(用于构造多边形),用GetRgnBox得到一个外接矩形,逐行扫描,判断各点是否在多边形内,记下总数即为面积。
      获取顶点坐标方法较多,可通过判断相邻3点的斜率;可通过线段长度来判断( if(AB+BC-AC<@) B不是顶点   //@是一个很小的正数);还可以判断相邻3点组成的三角形的面积是否为0;
     
      

  9.   

    求多边形的面积,看你是什么情况了!分两种情况:基于矢量图的,基于位图的,两种的算法是有区别的!但是可以相互转化的。参考:
    http://expert.csdn.net/Expert/topic/2246/2246139.xml?temp=.5281488