2010-05-21 5 views
17

Я использую класс Line для рисования на холсте в WPF, и хотя я установил StrokeThickness = 1, линия отобразилась в 2 пикселя в ширину - это почти как будто минимальная толщина равна двум. Как нарисовать линию толщиной 1 пиксель?Как нарисовать линию на холсте в WPF толщиной 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); 

ответ

32

Две вещи:

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

MAGIC! МНОГО СПАСИБО! – xarzu

3

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

myLine.SnapsToDevicePixels = true; 

Это остановит WPF от рендеринга "половину пикселей", чтобы сглаживать вашей линии.

4

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

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

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

Смежные вопросы