Имейте в виду, что (0, 0)
не является центром верхнего левого пикселя. Вместо этого это верхний левый угол этого пикселя. Чтобы нарисовать линию с толщиной хода 1
в середине второго столбца пикселя (с индексом 1), вам нужно будет рисовать от (1.5, 1)
до (1.5, RenderSize.Height - 1)
:
dc.DrawLine(myPen, new Point(1.5, 1), new Point(1.5, RenderSize.Height - 1));
Настройка SnapsToDevicePixels = true
сделала вашу линию привязкой слева на половину пикселя.
Если вы будете использовать PenLineCap.Square как для StartLineCap
, так и для EndLineCap
] свойства пера линии, вы можете рисовать от одного пиксельного центра до другого:
var myPen = new Pen(Brushes.LightGray, 1);
myPen.StartLineCap = PenLineCap.Square;
myPen.EndLineCap = PenLineCap.Square;
dc.DrawLine(myPen, new Point(1.5, 1.5), new Point(1.5, RenderSize.Height - 1.5));