Я понимаю, что ctor Rectangle (и RectangleF) допускает отрицательные размеры, но я не понимаю, почему ctor не переводит это в "реальные значения", которые должны иметь прямоугольник, например:
x:0, y:0, w:-100, h:200 == x:-100, y:0, w:100, h:200
И так далее.Это не имеет смысла.Если вы попросите область в первом случае (Ш х В), вы получите ... отрицательную область.Если вы попросите периметр, то он полностью сломан.Это заставляет вас писать множество шаблонов Math.Abs
, когда логика и математика (базовая математика) говорят: «Размеры формы не могут быть отрицательными».
А если вы используете FromLTRB
, тогда у вас естьначать делать min и max, и это много грязного кода.
Есть ли какая-то тонкая причина, почему команда .net сделала Rectangle ctor таким образом?
И, в конце концов,Есть ли какой-либо метод для построения прямоугольников "в правильном направлении", или я должен сделать один?
Редактировать: Я нашел другую проблему, я назову это ошибкой;если вы используете отрицательный x (например, -100) и отрицательную ширину (например, -200), он говорит: «Мое право - -300».И то же самое с Top & Bottom & Left.Ницца!Я могу понять, как он относится к размерам негативов, но это кажется мне неприемлемым.Теперь право не правильно ...