我在画布上渲染wpf中的一堆行。其中一些重叠,我希望这显示为一个实线。情况似乎并非如此。
我创建了一个演示应用程序来重现该问题(下面的代码)。在这个demoapp中,我可以在画布上设置Snapdevicepixels = true并且渲染变得正确。
然而,在我的实际应用中,这似乎无法解决问题。
还有什么可能导致这种视觉问题?
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
for (int i = 0; i < 5; i++)
{
var lines = GetLines(i*50 + 51.3367948717949d);
foreach (var polyline in lines)
{
myCanvas.Children.Add(polyline);
}
}
}
public List<Polyline> GetLines(double x)
{
var line1 = GetLine();
line1.Points.Add(new Point(x: x + 1 / 3, y: 100));
line1.Points.Add(new Point(x: x + 1 / 3, y: 50));
var line2 = GetLine();
line2.Points.Add(new Point(x: x + 1 / 3, y: 95));
line2.Points.Add(new Point(x: x + 1 / 3, y: 100));
line2.Points.Add(new Point(x: x+50 + 1 / 3, y: 100));
return new List<Polyline>() {line1,line2};
}
public Polyline GetLine()
{
var result= new Polyline();
result.Stroke = new SolidColorBrush(Colors.Black);
result.StrokeThickness = 2;
return result;
}
}