重叠的线条无法正确渲染

时间:2016-09-26 15:00:04

标签: wpf user-interface canvas rendering

我在画布上渲染wpf中的一堆行。其中一些重叠,我希望这显示为一个实线。情况似乎并非如此。

我创建了一个演示应用程序来重现该问题(下面的代码)。在这个demoapp中,我可以在画布上设置Snapdevicepixels = true并且渲染变得正确。

然而,在我的实际应用中,这似乎无法解决问题。

  • 我仔细检查了snaptodevicepixel是否通过Snoop
  • 设置为true
  • 我尝试在snoop内的可视树中的根视觉实体上设置snaptodevicepixels = 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;
    }
}

0 个答案:

没有答案