А-а-а-а .... понял! WPF считает строку от 0,0 до 10,0 буквально на этой логической строке, а не на строке пикселей, как в GDI. Чтобы лучше объяснить, представьте, что координаты в WPF являются репрезентативными для линий, нарисованных на листе миллиметровки, тогда как пиксели - это квадраты, из которых состоят эти линии (при условии 96 точек на дюйм. Вам нужно будет соответствующим образом отрегулировать, если они разные .)
Итак ... чтобы рисунок мог ссылаться на местоположения пикселей, нам нужно сместить чертеж от самих линий, чтобы он был центром пикселей (квадратов на миллиметровке), чтобы мы сместили весь рисунок на 0,5, 0,5 (опять же, при допущении DPI 96)
Так что, если это настройка 96 DPI, простое добавление этого в метод OnRender работает как чудо ...
drawingContext.PushTransform(new TranslateTransform(.5, .5));
Надеюсь, это поможет другим!
M