TextRenderer

.NETのクラスライブラリであるTextRenderer.MeasureText メソッドを検証してみた。
http://wantech.ikuto.com/software/TextRendererTest.exe

MSゴシック9ポイントの場合、半角文字は横幅6、全角文字は横幅12を期待したが、
結果は半角11、全角17で、両方とも期待した数値より5大きい。
ちなみにヌル文字の幅が5ポイントに設定されていた。
MSゴシック10ポイントは、半角14、全角21で、両方とも期待した数字より7大きい。
ヌル文字の幅は7ポイントの設定だ。
これってすなわち、MeasureTextメソッドで出てきた数字は、ヌル文字の幅分引けば使えるって事か。
いや、メイリオ9ポイントではヌル文字が16でダメだった。

.NETアプリを作る際、.NETにない機能を実現しようとするとWin32 APIを使う訳だが、
その回数が多ければ多いほど、.NETアプリは遅くなってしまうらしいので、
なるべく.NETの機能だけで何でもやろうと思うと、.NETはもっともっと進化して貰わなければならない。
テキストエディタを作る場合は、文字の幅をフォントごとに計算できないと折り返しが出来ないので、
そういう機能が.NETに備わってくれないと困る。
それで今回のMeasureTextだが、そのままではやはり使い物にならない数字を返してきた。
でも、ひょっとしたら、いくら引けば使える数字になるのかわかる方法があるかも知れない。
ほかに、キャレットの表示も出来なきゃいけないし、IMEとの通信も出来なきゃいけない。
どっちにしろ、まだ.NETはダメみたい。
.NETがテキストエディタを作るのに十分なほど進化すれば、Microsoft製ソフトも.NET移行するはず。
ワードが作れるのにテキストエディタが作れないはずがないって感じになるまでは、
ピュアな.NETでテキストエディタは作れないと思っていいんじゃなかろうか。
動画プレーヤーもちょっと凝ったことをやろうとするとすぐ.NETじゃ無理になるし、
言語としてはC♯をいじりたいのに、どのプロジェクトも移行出来ないなぁ。

たぶん関連のある記事:

コメントは終了しています。