4

.NET フレームワークによって提供される PrintDocument を使用して、クメール スクリプト (ユニコード) 文字列をプリンターに送信しようとしています。

残念ながら、Graphics.DrawString() はクメール スクリプトを正しくレンダリングしないようです。

プラットフォーム: Windows 7 Ultimate
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);
}
4

2 に答える 2

5

マン、
私はあなたのコードをForm_Paint()ハンドラーでテストしましたが、あなたが言ったことを正確に理解しました。
しかし、代わりにこれを使用すると:

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

希望通りのテキストを提供してくれました。
でそれを試してくださいprintDoc_PrintPage()

代替テキスト

于 2010-11-08T23:01:30.370 に答える
1

Albin と Beemer の積極的な反応に感謝します。

C# Google グループにいくつか投稿した後。GDI+ に、特定のスクリプト (この場合は「Khmer」) を別の文言で誤って表示するバグがあることが確認されています。

GDI+ DrawString() の問題を検証するために、ネイティブの win32 テスト アプリケーションが作成されました。

バグ レポートが Microsoft Connect に送信されました: http://connect.microsoft.com/VisualStudio/feedback/details/620081/

于 2010-11-10T01:31:03.457 に答える