如何使用C#graphics.DrawString绘制unicode字符串

时间:2010-11-07 08:17:59

标签: c# drawstring printdocument

我正在尝试使用.NET框架提供的PrintDocument将khmer脚本(unicode)字符串发送到打印机。

不幸的是,在我看来,Graphics.DrawString()不能正确呈现高棉脚本。

平台:Windows 7旗舰版 IDE:VS 2010 Ultimate

以下是示例代码:

void printDoc_PrintPage(object sender, PrintPageEventArgs e)
{
  var font = new Font("Khmer UI", 12);
  var text = "សួស្តី"; // "Hello"
  e.Graphics.DrawString(text, font, Brushes.Black, 100, 100);
}

2 个答案:

答案 0 :(得分:5)

曼,
我在Form_Paint()处理程序上测试了你的代码,我得到了你所说的 但是当我用它时:

TextRenderer.DrawText(e.Graphics, text, font, new Point(100, 100), Color.Black);  

它以你想要的方式给了我文字。
试试printDoc_PrintPage()

alt text

答案 1 :(得分:0)

感谢Albin和Beemer的积极响应。

在c#google小组中发帖几篇。已经确认GDI +中存在错误地将某些脚本(在本例中为“高棉”)错误地显示为不同的措辞。

创建了一个本机win32测试应用程序来验证GDI + DrawString()的问题。

已向Microsoft Connect提交错误报告:http://connect.microsoft.com/VisualStudio/feedback/details/620081/