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); }
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; } }