2010-05-21 3 views
17

J'utilise la classe Line pour dessiner sur une toile dans WPF et même si je mets StrokeThickness = 1, la ligne apparaît 2 pixels de large - c'est presque comme si l'épaisseur minimum est deux. Comment puis-je dessiner une ligne qui a vraiment 1 pixel d'épaisseur?Comment dessine-t-on sur WPF une ligne de 1 pixel d'épaisseur?

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

Répondre

32

Deux choses:

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

MAGIC! MERCI BEAUCOUP! – xarzu

3

Essayez d'ajouter ceci:

myLine.SnapsToDevicePixels = true; 

qui arrêteront WPF de rendre "pixels demi" pour anticrénelage votre ligne.

4

En dehors de ce qui a été suggéré, il pourrait être également possible que votre résolution d'écran est plus de 96 DPI. Quelles que soient les mesures que vous donnez à WPF, par défaut, WPF supposera toujours que 96 pixels correspondent à 1 pouce.

Le résultat est, sur un écran de disons 192 DPI (96 * 2), dessiner une ligne d'épaisseur 1 tirera une ligne avec une épaisseur de 2 pixels.

Si c'est le cas, vous devrez spécifier explicitement les unités.

Questions connexes