Как Вы чертите линию на холсте в WPF, который 1 пиксель толщиной

Я использую класс Строки для привлечения холста в 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);
19
задан tehDorf 21 May 2015 в 20:53
поделиться

3 ответа

Две вещи:

myLine.SnapsToDevicePixels = true;
myLine.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased);
35
ответ дан 30 November 2019 в 02:56
поделиться

Попробуйте добавить следующее:

myLine.SnapsToDevicePixels = true;

Это остановит WPF от рендеринга "половинных пикселей" для сглаживания вашей строки.

5
ответ дан 30 November 2019 в 02:56
поделиться

Помимо того, что было предложено, возможно, разрешение вашего экрана превышает 96 DPI. Какие бы измерения вы ни передавали WPF, по умолчанию WPF всегда будет считать, что 96 пикселей соответствуют 1 дюйму.

В результате, на экране с разрешением, скажем, 192 DPI (96 * 2), при рисовании линии толщиной 1 будет нарисована линия толщиной 2 пикселя.

В этом случае вам придется явно указать единицы измерения.

5
ответ дан 30 November 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: