Нестабильная толщина линии при использовании System.Drawing.Graphics

Я пытаюсь нарисовать прямые вертикальные линии с шириной пера 1. Следующий метод рисует вертикальные линии сетки линейного графика.

public override void DrawGridLines(GDIGraphics graphics, Rectangle plotArea)
{
    using (Pen pen = new Pen(gridLineColor, gridLineThickness))
    {
        float x = plotArea.Right - 1;
        for (int i = 0; i < niceIntervalCount; i++)
        {
            int roundedX = Mathf.RoundToInt(x);
            graphics.DrawLine(pen, roundedX, plotArea.Top, roundedX, plotArea.Bottom - 2);
            x -= niceIntervalSpacing;
        }
    }
}

gridLineThickness установлен в 1. Я передаю целочисленные параметры в DrawLine метод предотвращения субпиксельного рендеринга. Я также отключил сглаживание и установил graphics.PageUnit в GraphicsUnit.Pixel, В одном случае вертикальные линии рисуются с толщиной 2 (обычно, когда много линий).

В других случаях эта ошибка исчезает.

Нажмите на изображения выше, чтобы увидеть их в полном размере без искажений.

0 ответов

Другие вопросы по тегам