トップ回答者
DrawStringでミャンマー語・シンハラ語などを正しく表示するには?

質問
-
工藤@NCPLと申します。お世話になります。
Graphics::DrawStringで、シンハラ語、ミャンマー語等のように、複数の文字要素で1文字を表示する言語を正しく表示するにはどのようにすればよいのでしょうか?多少調べて見ましたが、解決の糸口がつかめずにこちらへ投稿します。
具体的には下記のコード(シンハラ語の例)を実行したところ、エディタで見たソースコード上、あるいは同じ文字列をWordで表示させた文字列と異なる文字が表示されました。- お客様のアカウントが確認されるまで、本文に画像やリンクを含むことはできません
とのことで画像は貼れませんでした。
//描画先とするImageオブジェクトを作成する Bitmap canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height); //ImageオブジェクトのGraphicsオブジェクトを作成する Graphics g = Graphics.FromImage(canvas); //フォントオブジェクトの作成 Font fnt = new Font("Iskoola Pota", 32); //文字列を位置(0,0)、青色で表示 g.DrawString("ලේසර් ටෙස්ට් ලකුණු", fnt, Brushes.Blue, 0, 0); //リソースを解放する fnt.Dispose(); g.Dispose(); //PictureBox1に表示する pictureBox1.Image = canvas;
最終的には文字列を所定の解像度でビットマップに展開した画像が得られればよいので、
DrawString以外の方法でも結構です。(.Net(C#)でなくてMFC(VC++)でも)
問題解決の糸口になる情報が頂けたら幸甚です。
回答
すべての返信
-
ありがとうございます。
手元の環境でも (windows7 64bit/VS2015/C#)
System.Windows.Forms.TextRenderer.DrawText で思惑通りの描画を確認出来ました。
ありがとうございました。
- 編集済み Yuichi Kudo 2017年6月5日 4:08