У меня есть подкласс элемента управления в C# WinForms, а в моем обработчике OnPaint()
есть пользовательский текст для рисования. Шрифт установлен на Courier New, используя следующий код в моей форме:
FontFamily family = new FontFamily("Courier New");
this.myControl.Font = new Font(family, 10);
В самом элементе управления строка хранится в realText
, и я использую следующий код, чтобы вывести ее на экран:
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.DrawString(realText, Font, new SolidBrush(ForeColor), ClientRectangle);
}
Результат для некоторого случайного текста примера выглядит следующим образом: /img219/1778/courier.png
Если вы увеличите масштаб, вы увидите, например, что расстояние между первым «as» отличается от расстояния между вторым «as» (1 пиксель против 2 пикселей). Кто-нибудь знает, что может быть причиной этого, или как я могу предотвратить это? В интервалах гораздо больше похожих странностей, поскольку я рисую разными шрифтами, но я предполагаю, что все они являются результатом одной и той же проблемы.
Заранее спасибо за любые идеи, которые могут у вас возникнуть.