WPF Canvas - однопиксельная сетка

У меня есть пользовательский холст WPF, на котором я хотел бы показать сетку. Я делаю это, переопределяя метод OnRender в Canvas и используя функции рисования DrawingContext. IsGridVisible, GridWidth, GridHeight - это количество пикселей между каждой линией сетки по горизонтали и вертикали соответственно.

Я также использую ScaleTransform в свойстве Canvas.LayoutTransform для масштабирования элементов Canvas, и, как и следовало ожидать, толщины линий сетки умножаются на коэффициенты масштабирования ScaleTransform, как показано на рисунке ниже. Есть ли способ нарисовать однопиксельные линии, независимо от текущего Canvas RenderTransform?

    protected override void OnRender(System.Windows.Media.DrawingContext dc)
    {
        base.OnRender(dc);

        if (IsGridVisible)
        {
            // Draw GridLines
            Pen pen = new Pen(new SolidColorBrush(GridColour), 1);
            pen.DashStyle = DashStyles.Dash;

            for (double x = 0; x < this.ActualWidth; x += this.GridWidth)
            {
                dc.DrawLine(pen, new Point(x, 0), new Point(x, this.ActualHeight));
            }

            for (double y = 0; y < this.ActualHeight; y += this.GridHeight)
            {
                dc.DrawLine(pen, new Point(0, y), new Point(this.ActualWidth, y));
            }
        }
    }

альтернативный текст http://www.freeimagehosting.net/uploads/f05ad1f602.png

Ответы на вопрос(1)

Ваш ответ на вопрос