У меня есть функция, в которой я пытаюсь найти совпадающую точку между 2 наборами по 4 балла в каждой, но иногда функция сообщает, что коллекции не имеют общую точку, даже если в отладчике я вижуделать.Отладчик не показывает мне полную точность точек, поэтому я не вижу разницы?или здесь что-то еще происходит?Вот код для обвинения:
public static Point CorrectForAllowedDrawArea(Point previousDisplayLocation, Point newDisplayLocation, Rect displayLimitedArea, Rect newBoundingBox)
{
// get area that encloses both rectangles
Rect enclosingRect = Rect.Union(displayLimitedArea, newBoundingBox);
// get corners of outer rectangle, index matters for getting opposite corner
var outsideCorners = new[] { enclosingRect.TopLeft, enclosingRect.TopRight, enclosingRect.BottomRight, enclosingRect.BottomLeft }.ToList();
// get corners of inner rectangle
var insideCorners = new[] { displayLimitedArea.TopLeft, displayLimitedArea.TopRight, displayLimitedArea.BottomRight, displayLimitedArea.BottomLeft }.ToList();
// get the first found corner that both rectangles share
Point sharedCorner = outsideCorners.FirstOrDefault((corner) => insideCorners.Contains(corner));
// find the index of the opposite corner
int oppositeCornerIndex = (outsideCorners.IndexOf(sharedCorner) + 2) % 4;
в последней строке 'sharedCorner' иногда устанавливается в значение по умолчанию (Point), даже если обе коллекции Point имеют общую точку 1.
РЕДАКТИРОВАТЬ: Я должен упомянуть, если я помещаю отладчик обратно в верхнюю часть функции и перезапускаю его все равно не находит точку соответствия.Я должен также упомянуть, что эта функция использует класс Point пространства имен System.Windows и , а не пространства имен System.Drawing!Спасибо за указание на это в комментариях.