Я пытаюсь перенести мои Graphics.DrawString
вызовы (.NET1) на TextRenderer.DrawText
(новое в .NET 2.0), чтобы получить преимущества рендеринга ClearType.
Проблема в том, что TextRenderer не печатает правильно символы западного алфавита (корейский, японский и т. Д.)
Вот пример, показывающий проблему:
- Знаете ли вы, почему корейские символы не видны при использовании TextRenderer.DrawText?
- Знаете ли вы, как решить эту проблему?
Я рисую строки, используя следующие два метода:
private void DrawGraphicsString(
Graphics g, string text, Font font, Point p)
{
g.DrawString(
text, font, text_brush, p.X, p.Y, mStringFormat);
// mStringFormat is
// StringFormat.GenericTypographic |
// StringFormatFlags.MeasureTrailingSpaces
}
private void DrawTextRendererString(
Graphics g, string text, Font font, int x, int y)
{
TextRenderer.DrawText(
g, text, font, p, this.ForeColor, this.BackColor, mTextFormatFlags);
// mTextFormatFlags are
// StringFormat.GenericTypographic + StringFormatFlags.MeasureTrailingSpaces
// mTextFormatFlags =
// TextFormatFlags.NoPrefix |
// TextFormatFlags.NoPadding |
// TextFormatFlags.WordBreak |
// TextFormatFlags.TextBoxControl |
// TextFormatFlags.NoClipping |
// TextFormatFlags.ExpandTabs;
}
РЕДАКТИРОВАТЬ: Использование другого шрифта работает правильно (используется шрифт Malgun Gothic)
Так что теперь мои вопросы:
- Почему Graphics.Drawtext рисует корейские символы, даже если шрифт их не поддерживает?
- Я вставил текст corean в редактор Visual Studio, который использует шрифт «Consolas», и он нарисован правильно. Итак, почему редактор Visual Studio может отображать корейские символы, а текстовое поле - нет?