想的算法越多越好!
效率越高越好!

解决方案 »

  1.   

    要效率,就不能"实时".
    我常用的方法有:
    1 固定的遮罩图形检测
    2 不规则区域的路径判断
    这两种属于高效.其他的如:
    使用GetPixel+Mousemove判断
    使用多图对比判断
    等等
    这些都是属于低效的.
      

  2.   

    System.Drawing.Drawing2D.GraphicsPath _Path = new GraphicsPath();            _Path.AddRectangle(0, 0, 100, 100);
                _Path.AddRectangle(100, 100, 10, 10);
                System.Drawing.Region _Region = new Region(_Path);            if(_Region.IsVisible(new Point(50,50))
                {
                }
                else
                {
                }
      

  3.   

    请给出不成立的例子。该算法叫Ray casting algorithm或crossing number algorithm,对正常多边形(边和边没有扭在一起的),是数学上可证明的。
      

  4.   

    如果正方形的边长是5pix,正方形的的一条边和x轴平行,一个点在正方形的此边上,???
    如果正方形的边长是6pix,正方形的的一条边和x轴平行,一个点在正方形的此边上,???
      

  5.   

    还是我上面的思路,知道四边形的四个坐标,
    判断范围就行了
    分别以四个边为x轴,四个角为原型,计算指定点的在以角为圆心的实际坐标,只要该点同时满足在x轴上方或者在x轴上面,那么就是包括在内的。
    举个例子,ABCD,点E
    先以AB边为x轴,A点为圆心,那么计算E点相对应A点的坐标,如果在x轴下方,那么退出,
    如果在x轴上方并且Y轴在圆心的右边,那么继续以BC边为轴,以B点为圆心,依此类推
    如果在过程中遇到刚好在X轴并且圆心右边直接退出。
      

  6.   

    对于多边形P={p(1),p(2),...,p(n)}和点A ,假设多边形是个正常的多边形,
    那么对 角p(1)Ap(2)、角p(2)Ap(3)、角p(3)Ap(4)、……、角p(n-1)Ap(n)、角p(n)Ap(1) 求和,
    如果结果等于正负360度就说明在多边形内,0度就说明在外部,
    如果其中的某一个角等于正负180度,则在多边形上,如果A与某个点重合,则也在多边形上。