ClearType レンダリングの利点を得るために、Graphics.DrawString
呼び出し (.NET1) を(.NET 2.0 の新機能)に移行しようとしています。TextRenderer.DrawText
問題は、TextRenderer が西洋文字 (韓国語、日本語など) を正しく出力しないことです。
この問題を示す例を次に示します。
- TextRenderer.DrawText を使用すると韓国語の文字が表示されない理由を知っていますか?
- この問題を解決する方法を知っていますか?
次の 2 つの方法を使用して文字列を描画しています。
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;
}
EDIT:他のフォントを使用すると正しく動作します(フォントMalgun Gothicを使用)
だから今私の質問は:
- フォントが韓国語の文字をサポートしていなくても、Graphics.Drawtext が韓国語の文字を描画するのはなぜですか?
- 「Consolas」フォントを使用する Visual Studio エディターにコリアン テキストを貼り付けたところ、正しく描画されました。では、なぜ Visual Studio エディターでは韓国語の文字を表示でき、テキスト ボックスでは表示できないのでしょうか?