読者です 読者をやめる 読者になる 読者になる

酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Windows Mobile(.NET Compact Framework)でClearTypeを有効にしたフォントを生成する

Windows Mobile

Windows Mobile 6.5.3になって、フォントオブジェクトを生成するCreateFontIndirect関数がNotSupportedExceptionを返すようになってしまいました。

もしかしてWM6.5.3でCreateFontIndirect関数がサポートされなくなったのかな?それにしても同じ機種でも端末によって例外の吐いたり吐かなかったりするのがよく判らないや。

Microsoft.WindowsCE.Forms名前空間にLogFontクラスがあるので、これとFontクラスのFromLogFontメソッドを使ってもClearType有効のフォントを生成することが出来ます。

Microsoft.WindowsCE.Forms.LogFont lf = new Microsoft.WindowsCE.Forms.LogFont();

// フォント名の指定
lf.FaceName = "Tahoma";

// フォントのサイズ
lf.Height = 24;

// ClearTypeを有効に
lf.Quality = Microsoft.WindowsCE.Forms.LogFontQuality.ClearType;

Font font = Font.FromLogFont(lf);

ポイントからheightを求める場合は、「\Windows Mobile(.NET Compact Framework)のオーナードローでの描画時のフォントサイズの求め方 - 酢ろぐ!」を参考にして計算してください。