Подтвердить что ты не робот

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

Я использую класс Line для рисования на холсте в 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);
4b9b3361

Ответ 1

Две вещи:

myLine.SnapsToDevicePixels = true;
myLine.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased);

Ответ 2

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

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

Если это так, вам нужно будет явно указать единицы.

Ответ 3

Попробуйте добавить это:

myLine.SnapsToDevicePixels = true;

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