Нестабильная толщина линии при использовании 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 (обычно, когда много линий).
В других случаях эта ошибка исчезает.
Нажмите на изображения выше, чтобы увидеть их в полном размере без искажений.