我正在嘗試使用Graphics.DrawString
和TextRenderer.DrawText
來繪製一些文本。我使用符號字體但輸出不相同 - TextRenderer
不處理符號「小於或等於」,「大於或等於」和「不等於」(字節值0xA3
,0xB3
, 0xB9
) - 它畫框而不是它們。其他特殊的符號繪製正確,但 - 例如「平方根」(0xD6).
我用這兩種方法相同的字體。我能做些什麼來使TextRenderer
正確繪製這些符號?TextRenderer不繪製一些符號字符
編輯:
我運行.NET 4,Windows 7旗艦版與捷克的語言版本(但我的英語版本測試,它看起來是一樣的)。
下面是我的測試應用程序的代碼:
private void panelDrawString_Paint(object sender, PaintEventArgs e)
{
byte[] array = new byte[] { 0xA3, 0xB3, 0xB9, 0xA4, 0xD6, 0xB4, 0xB0 };
string s = new string(array.Select(b => (char) b).ToArray());
using(StringFormat sf = StringFormat.GenericDefault)
using(Font font = new Font("Symbol", 14, FontStyle.Regular))
{
sf.Alignment = StringAlignment.Center;
sf.LineAlignment = StringAlignment.Center;
e.Graphics.DrawString(s, font, SystemBrushes.WindowText, panelDrawString.ClientRectangle, sf);
}
}
private void panelTextRenderer_Paint(object sender, PaintEventArgs e)
{
byte[] array = new byte[] { 0xA3, 0xB3, 0xB9, 0xA4, 0xD6, 0xB4, 0xB0 };
string s = new string(array.Select(b => (char) b).ToArray());
using(Font font = new Font("Symbol", 14, FontStyle.Regular))
{
TextRenderer.DrawText(e.Graphics, s, font, panelTextRenderer.ClientRectangle, panelTextRenderer.ForeColor);
}
}
這是輸出:
工作正常,當我嘗試它。通過記錄.NET版本和Windows版本併發布代碼片段來改善您的問題。 –
是的..它工作得很好..你有沒有使用這些字節,而渲染或複製粘貼從其他地方的符號? –