Example #1
0
        public override bool Contains(float x, float y)
        {
            if (_polygonPts == null || _polygonPts.Count < 3)
            {
                return(false);
            }
            bool br = OuterRect.Contains(x, y);

            //if (br)
            //{//再次判断是否在多边形里面
            //    int count = _polygonPts.Count;
            //    var pt0 = new PointF(x, y);
            //    float sumArea = 0f;
            //    for (int i = 0; i < count - 1; i++)
            //    {
            //        var pt1 = GetPt(i);
            //        var pt2 = GetPt(i + 1);
            //        sumArea += GetTriangleArea(pt0, pt1, pt2);
            //    }
            //    {
            //        var pt1 = GetPt(0);
            //        var pt2 = GetPt(count - 1);
            //        sumArea += GetTriangleArea(pt0, pt1, pt2);
            //    }
            //    br = sumArea <= AreaValue();
            //}
            return(br);
        }
Example #2
0
        internal void ResizeSelectedRect(double scale)
        {
            var rect = new Rect()
            {
                X = SelectedRect.X * scale, Y = SelectedRect.Y * scale, Width = SelectedRect.Width * scale, Height = SelectedRect.Height * scale
            };
            var leftTop     = new Point(rect.Left, rect.Top);
            var leftBottom  = new Point(rect.Left, rect.Bottom);
            var rightTop    = new Point(rect.Right, rect.Top);
            var rightBottom = new Point(rect.Right, rect.Bottom);

            if (OuterRect.Contains(leftTop) &&
                OuterRect.Contains(leftBottom) &&
                OuterRect.Contains(rightTop) &&
                OuterRect.Contains(rightBottom) &&
                rect.Width >= 2 * MinSelectRegionSize &&
                rect.Height >= 2 * MinSelectRegionSize)
            {
                SelectedRect = rect;
            }
        }