我试图将我的Graphics.DrawString
调用(.NET1)迁移到TextRenderer.DrawText
(.NET 2.0中的新增功能)以获得ClearType渲染的优势。Graphics.DrawString vs TextRenderer.DrawText绘制韩文字符
的问题是,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;
}
编辑:使用其他字体是否能够正常工作(使用的字体清黑体)
所以现在我的问题是:
- 为什么Graphics.Drawtext会绘制韩文字符,即使字体不支持它们?
- 我在Visual Studio编辑器中粘贴了corean文本,该编辑器使用“Consolas”字体并正确绘制。那么,为什么Visual Studio编辑器可以显示韩文字符,并且文本框不能?
看到矩形意味着您使用的字体不支持字形。奇怪的问题,在Vista +上,特别是因为你似乎至少有一个支持他们的字体。无法从截图反向工程代码。 – 2012-03-15 16:58:36
@HansPassant:这两种情况的字体是一样的,所以我不确定是否有字体问题。 – 2012-03-15 17:21:17
和汉斯一样,我不相信只是因为一个函数正确显示字体,这意味着另一个函数也应该。为什么不通过你的机器上的字体,看看有什么影响? – 2012-03-15 17:46:37