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

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

Я также использую ScaleTransform на Холсте. Свойство LayoutTransform для изменения масштаба объектов Холста и как каждый ожидает, толщины линии сетки, умножается на масштабные коэффициенты ScaleTransform как показано в ниже изображения. Там какой-либо путь состоит в том, чтобы провести единственные пиксельные линии, независимо от текущего Холста 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

6
задан LiamV 26 May 2010 в 20:24
поделиться

1 ответ

Как комментарии к исходному состоянию сообщения. Толщина пера должна быть установлена ​​на 1,0 / масштаб.

2
ответ дан 17 December 2019 в 20:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: