У меня проблемы с методом Graphics.DrawString ().Мой UserControl использует моноширинный шрифт для рисования на панели, и, очевидно, DrawString () форматирует текст таким образом, что он больше не является моноширинным.Я использовал StringFormat в надежде исправить это, но безуспешно:
StringFormat sf = new StringFormat(StringFormatFlags.NoClip | StringFormatFlags.FitBlackBox | StringFormatFlags.LineLimit | StringFormatFlags.MeasureTrailingSpaces);
Код для рисования текста:
for (int i = 0; i < document.Text.Count; i++)
g.DrawString(document.Text[i], Font, Brushes.Black, new PointF(offset - 2, offset + Font.Height * i), sf);
Например, при рисовании "eeeeeeee"в Consolas 9 время от времени два e будут на 1 пиксель ближе к другому.Есть ли способ правильно отобразить текст в моноширинном пространстве?
(Моя актуальная проблема: я создаю свой собственный элемент управления текстовым полем с нуля, в качестве упражнения и для развлечения. На самом деле все идет довольно хорошо, но панельпри отображении текста должна быть возможность позиционирования каретки в соответствии с положением щелчка мыши. Найти правильную строку легко благодаря свойству высоты шрифта. Однако найти текущий индекс в этой строке нельзя. Для шрифтов, не имеющих моноширинного пространства, я могуНе представляю способ определения индекса каретки, но для моноширинных шрифтов это должно быть выполнимо, поскольку ширина символа фиксирована. Так, может быть, есть лучший способ определить это?)
С уважениемJacco