如何在WPF中在1像素厚的画布上绘制一条线

xar*_*rzu 19 c# wpf line visual-studio-2010

我正在使用Line类在WPF中的画布上绘制,即使我设置StrokeThickness = 1,该行显示2像素宽 - 这几乎就像最小厚度是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);
Run Code Online (Sandbox Code Playgroud)

Rus*_*sty 35

两件事情:

myLine.SnapsToDevicePixels = true;
myLine.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased);
Run Code Online (Sandbox Code Playgroud)


Mat*_*ton 5

尝试添加此:

myLine.SnapsToDevicePixels = true;
Run Code Online (Sandbox Code Playgroud)

这将阻止WPF渲染"半像素"以对抗你的线.


nul*_*Dev 5

除了建议之外,您的屏幕分辨率也可能超过96 DPI.无论您对WPF进行何种测量,默认情况下WPF始终假设96像素对应1英寸.

结果是,在192 DPI(96*2)的屏幕上,绘制厚度为1的线将绘制厚度为2像素的线.

如果是这种情况,则必须明确指定单位.