我試圖將我的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