一个不规则型,一个点,我如何确定这个点在不在这个不规则型内呢?

解决方案 »

  1.   

    用这个不规则型构造一个 CRgn,
    然后调用 BOOL PtInRegion( int x, int y ) const 判断该点是否在多边形内
      

  2.   

    楼上的方法不错,创建不规则CRgn的函数:
    CreatePolygonRgn 用一个多边形区域来初始化一个CRgn对象。如果有必要,系统通过在第一个顶点和最后一个顶点之间绘制直线来自动关闭该多边形  
    CreatePolyPolygonRgn 用一系列封闭的多边形组成的区域来初始化一个CRgn对象。这些多边形可能互不相交或相互重叠  
    具体怎么使用你自己去查吧
      

  3.   

      HRGN   cr;     
      BeginPath(hDC);   
      MoveToEx(hDC,   0,   0,   NULL);   
      LineTo(hDC,   64,   0);   
      LineTo(hDC,   64,   16);   
      LineTo(hDC,   48,   32);   
      LineTo(hDC,   0,   32);   
      LineTo(hDC,   0,   0);   
      EndPath(hDC);   
      cr   =   CreateRectRgn(0,   0,   63,   63);   
      cr   =   PathToRegion(hDC);   
        
      if   (PtInRegion(point))   ...
      

  4.   

     if  (PtInRegion(point))  point是什么你没定义
      

  5.   

    这哪里是算法问题????熟悉GDI就行了。
    如果是算法那就是考虑 从这个点所在的直线想两边射线出去 检查与不规则区域的交点 通过交点个数的是奇数还是偶数来判断
      

  6.   

    BOOL PtInRegion( int x, int y ) const