Я использую класс Строки для привлечения холста в WPF и даже при том, что я установил StrokeThickness = 1
, строка обнаруживается 2 пикселя шириной - это почти, как будто минимальная толщина равняется двум. Как я черчу линию, который действительно 1 пиксель толщиной?
Line myLine = new Line();
myLine.Stroke = System.Windows.Media.Brushes.Black;
myLine.X1 = 100;
myLine.X2 = 140; // 150 too far
myLine.Y1 = 200;
myLine.Y2 = 200;
myLine.StrokeThickness = 1;
graphSurface.Children.Add(myLine);
Две вещи:
myLine.SnapsToDevicePixels = true;
myLine.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased);
Попробуйте добавить следующее:
myLine.SnapsToDevicePixels = true;
Это остановит WPF от рендеринга "половинных пикселей" для сглаживания вашей строки.
Помимо того, что было предложено, возможно, разрешение вашего экрана превышает 96 DPI. Какие бы измерения вы ни передавали WPF, по умолчанию WPF всегда будет считать, что 96 пикселей соответствуют 1 дюйму.
В результате, на экране с разрешением, скажем, 192 DPI (96 * 2), при рисовании линии толщиной 1 будет нарисована линия толщиной 2 пикселя.
В этом случае вам придется явно указать единицы измерения.