Прямоугольник .NET отключен на 1 - PullRequest
1 голос
/ 08 апреля 2010

После работы с объектом .NET GDI + Rectangle, я заметил, что если я создам прямоугольник с X: 0 * Y: 0 * Ширина: 100 * Высота: 100, свойства Right и Bottom установлены на 100, 100. Разве это не должно быть 99, 99? 0 - 99 - это 100 пикселей. 0 - 100 - это 101 пиксель.

FWIW, документация говорит, что право вычисляется по x + width, а нижнее значение равно y + height, но верно ли это? Возможно, «правильно» здесь не имеет значения, если оно соответствует?

Все, что я знаю, это то, что это несколько (читай ... очень) раздражает!

Ответы [ 2 ]

2 голосов
/ 08 апреля 2010

Из документации :

"Размеры клиентской области также описываются структурой Rectangle, которая содержит клиентские координаты для области. Во всех случаях верхняя левая координата прямоугольника включена в клиентскую область, а нижняя правая координата исключено. Графические операции не включают правый и нижний края клиентской области. "

Итак, ваши x-точки составляют набор [0,100), который составляет 100 значений.

2 голосов
/ 08 апреля 2010

Это зависит от того, рассматриваете ли вы координаты как целые пиксели или как точки между пикселями. Если вы рассматриваете их как бесконечно малые точки, то число пикселей между (0, 0) и (100, 0) составляет 100 пикселей. Однако, если вы считаете их маркировкой пикселей - так, чтобы оба пикселя (0, 0) и (100, 0) были включены в прямоугольник, то это, как вы говорите, шириной 101 пиксель.

Было бы хорошо, если бы это было где-то прописано, конечно. Я подозреваю, что это так, но я не сталкивался с соответствующей документацией. Надеюсь, кто-то может предоставить ссылку:)

...