Direct2D Coordinate erro - PullRequest
       118

Direct2D Coordinate erro

0 голосов
/ 30 апреля 2020

Я делал тестовую программу с Direct2D, чтобы показать линии, однако я заметил небольшую деталь, и это то, что когда я говорю Direct2D рисовать пунктирную линию (100 200) и (500 200), Direct2D действительно не рисует начало линии в точке (100,200), но это dr aws это на один пиксель меньше, то есть он координирует по координате (100,99). Кто-нибудь знает, почему это? Я проверил эту деталь, используя direct2d без режима сглаживания и показывая в отладочном выводе координаты мыши.

1 Ответ

2 голосов
/ 30 апреля 2020

Это вызвано собственным дизайном Direct2D.

Если быть точным, координаты линии находятся в (99,5, 199,5) - (500,5, 200,5).

И Ответ @Rick Brewster объяснил это.

Когда вы даете ему пиксельную координату, например (100, 120), которая относится к верхнему и левому углу пиксельного элемента, который простирается от пиксельные координаты (100, 120) - (101, 121) (верхний / левый - включительно, правый / нижний - не включен). Поскольку это прямая горизонтальная линия, вы фактически получаете заполненный прямоугольник из (99,5, 119,5) - (300,5, 120,5).

Так что если вы хотите нарисовать линию, покрывающую пиксели (100 , От 200) до (500, 200), вы можете использовать псевдонимный рендеринг или использовать полпиксельные смещения.

...