проблема алиасинга - PullRequest
       6

проблема алиасинга

3 голосов
/ 27 октября 2010

код ниже рисует две вертикальные линии на холсте.эти линии имеют разную толщину на экране, хотя они одинаковы в коде.я пытаюсь найти способ заставить их выглядеть такими же четкими, как граница вокруг холста.установка Path.SnapsToDevicePixels не имеет никакого эффекта.Код является надуманным примером, и в целом холст, который отображает эти строки, может быть вложен глубже в визуальное дерево.

1 Ответ

2 голосов
/ 28 октября 2010

нужно использовать GuidelineSet:


        protected override void OnRender(DrawingContext c)
        {
            base.OnRender(c);

            Pen pen = new Pen(Brushes.Black, 1);
            double h = this.ActualHeight;
            double d = pen.Thickness / 2;

            foreach (double x in new double[] { 7, 14 })
            {
                GuidelineSet g = new GuidelineSet(new double[] { x + d },
                                                  new double[] { 0 + d, h + d });

                c.PushGuidelineSet(g);
                c.DrawLine(pen, new Point(x, 0), new Point(x, h));
                c.Pop();
            }
        }
...