2010-05-21 51 views
17

Tôi đang sử dụng lớp Line để vẽ trên canvas trong WPF và mặc dù tôi đặt StrokeThickness = 1, dòng này hiển thị rộng 2 pixel - gần như như thể độ dày tối thiểu là hai. Làm cách nào để vẽ một đường có độ dày thực sự là 1 pixel?Làm cách nào để vẽ một đường trên canvas trong WPF có độ dày 1 pixel

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

Trả lời

32

Hai điều:

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

MAGIC! MUCH THANKS! – xarzu

3

Hãy thử thêm này:

myLine.SnapsToDevicePixels = true; 

Đó sẽ ngừng WPF từ render "pixel nửa" để Antialias dòng của bạn.

4

Ngoài những gì đã được đề xuất, nó cũng có thể được có thể là độ phân giải màn hình của bạn là hơn 96 DPI. Dù các phép đo bạn đang đưa ra cho WPF, theo mặc định, WPF sẽ luôn luôn giả định rằng 96 pixel tương ứng với 1 inch.

Kết quả là, trên màn hình có 192 DPI (96 * 2), vẽ một đường dày 1 sẽ vẽ một đường có độ dày 2 pixel.

Nếu đúng như vậy, bạn sẽ phải chỉ định rõ ràng các đơn vị.

Các vấn đề liên quan