ширина прямоугольника - PullRequest
       39

ширина прямоугольника

2 голосов
/ 06 января 2011

звучит как очень простой вопрос, но очень часто я путаюсь с этим. Пожалуйста, поймите, где я не прав.

осталось = 0
вправо = 10
ширина = справа - слева = 10 (используется Android)

Теперь, если мы рисуем этот прямоугольник на экране, он переходит с 0-го пикселя на 10-й, что означает, что он занимает всего 11 пикселей, поэтому его ширина равна 11.

вправо должно быть слева + ширина - 1 => ширина = справа - слева + 1 поэтому, когда левый = 0, правый = 9, и мы счастливы.
Попробуйте нарисовать прямоугольник с left = right, и оба должны быть 0. Я забыл, но когда-то назад, используя QT, я обнаружил проблему из-за этого. это возвращало ширину как 0 для прямоугольника 1x1.

Я думаю, что для фреймворков, использующих предыдущий подход, предполагается, что левый включен, а правый исключен во всех функциях рисования, так что затрагиваются только пиксели = ширина?

Ответы [ 2 ]

2 голосов
/ 06 января 2011

При рисовании линий на растре, например на пиксельном экране, общепринятым условием является то, что целочисленные координаты лежат в центрах пикселей , а не в углах.

Взгляните на алгоритм Брезенхема .

0 голосов
/ 07 января 2011

Очень хорошее определение координат пикселей можно найти в статье Пола С. Хекберта в Graphics Gems 4: «Каковы координаты пикселя?»

К сожалению, это звучит какAndroid дает вам нестандартное определение.

...