我正在尝试将我的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 即使字体不支持也会绘制韩文字符?
- 我在 Visual Studio 编辑器中粘贴了 corean 文本,该编辑器使用“Consolas”字体并且绘制正确。那么,为什么 Visual Studio 编辑器可以显示韩文字符,而文本框却不能呢?