2010-05-21 8 views
17

Estoy usando la clase Line para dibujar en un lienzo en WPF y aunque configuré StrokeThickness = 1, la línea muestra 2 píxeles de ancho, es casi como si el espesor mínimo fuera dos. ¿Cómo dibujo una línea que es realmente de 1 píxel de grosor?¿Cómo se dibuja una línea en un lienzo en WPF que es de 1 píxel de grosor?

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); 

Respuesta

32

dos cosas:

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

MAGIC! MUCHO GRACIAS! – xarzu

3

Trate de añadir esto:

myLine.SnapsToDevicePixels = true; 

que dejará de prestar WPF "píxeles y medio" a su línea de antialias.

4

Aparte de lo que se ha sugerido, también podría ser posible que su resolución de pantalla es de más de 96 ppp. Independientemente de las medidas que le dé a WPF, de manera predeterminada, WPF siempre supondrá que 96 píxeles corresponden a 1 pulgada.

El resultado es que, en una pantalla de, digamos, 192 DPI (96 * 2), dibujar una línea de grosor 1 dibujará una línea con un grosor de 2 píxeles.

Si este es el caso, tendrá que especificar explícitamente las unidades.

Cuestiones relacionadas