Такая проблема. Рисую мышкой прямоугольник, задаются начальные координаты, и конечные.
Но беда в том, что в Rectangle конечный координаты задаются в качестве размера.
И поэтому координаты X=10, Y=10, X=50, Y=50 работают нормально. Вырисовывается то что нужно.
А когда координаты становятся X=50, Y=50, X=10, Y=10 прямоугольник не рисуется, считая что задан нулевой размер.
Пробовал рисовать полигоном, но мне нужен конкретно объект Rectangle на выходе.
Вижу только 1 вариант. Перебирать координаты полигона и подставлять в прямоугольник. Но это очень криво выглядит.
Есть какой то еще способ чтобы рисовать прямоугольник "В обе стороны", а не только вниз и вправо?
28.10.10 13:35: Перенесено из '.NET'
у прямоугольника 4 стороны.
надо найти верхнюю левую и нижнюю правую (насколько я помню ось Y направлена вниз) в чем проблема?
... << RSDN@Home 1.2.0 alpha 4 rev. 1227>>
Здравствуйте, head-dron, Вы писали:
HD>Здравствуйте, cvetkov, Вы писали:
C>>у прямоугольника 4 стороны.
C>>надо найти верхнюю левую и нижнюю правую (насколько я помню ось Y направлена вниз) в чем проблема?
HD>Конкретно у Rectangle(int x, int y, int width, int height);
HD>То есть нажимая мышь MouseDown я фиксирую X и Y. И далее в MouseMove высчитываю высоту и ширину.
HD>И если мышь залезет выше или левее начальных координат то получится отрицательная высота или ширина, что вызывает ошибку.
Не тестировал, но вроде должно помочь.
var currentHeight = currentY - startY;
var currentWidth = currentX - startX;
DrawRectangle(..., Math.Min(startX, currentX),
Math.Min(startY, currentY), Math.Abs(currentWidth), Math.Abs(currentHeight));