2012-01-09 15 views
0

私はCGContextにテキストを描くかなり単純なコードをいくつか持っています。以下は抜粋です(若干編集されています)。フォントサイズCGContextShowTextAtPointの不具合

CGContextSelectFont(context, "Helvetica", 1.5, kCGEncodingMacRoman); 
    CGContextShowTextAtPoint(context, xpos, ypos, "Hello", 5); 

テキストが表示されます。しかし、いくつかの未知の理由で、コンテキストを含むビューをクリックすると、フォントがより小さなサイズに変わります。また、ビューを含むウィンドウのサイズを変更すると、フォントは元のサイズに戻ります。これの理由は何ですか?

答えて

2

初めは1.5ポイントがかなり大きかったです。他のスケーリングは有効ではないと仮定すると、画面全体では1つのピクセル全体とその上のぼやけたピクセルになります。

私は自分自身に遭遇したバグがあります。drawRect:に入ると、現在のコンテキストのテキストマトリックスが恒等マトリックスではありませんでした。私の場合、私はそれが両方の軸に13だけスケールを加え、さらに翻訳を含むことを見ました。 (おそらくタイトルバーの描画から残っています)file your ownにして引用したい場合は、#10585106としてこのファイルをRadarに提出しました。

解決策は、テキストを描画する前にthe identity transformに戻ってset the text matrixに戻ることです。

これを実行すると、あなたのテキストはあなたの質問と同じくらい小さくなることがわかります。より妥当なものにフォントサイズを変更する必要があります。 Core Text contains a function to get the system fonts(これはget their sizesです)、AppKit's NSFont class contains methods for the same purposeです。

+0

はい解決策は、テキストマトリックスをアイデンティティ変換に設定していました。投稿した直後にそれを説明します。これはiOSでは必要ではないので、やや驚きました。 –

+0

@RubenZilibowitz:それはMac OS X上では必要ないはずです。だから私はバグを提出し、同じことをお勧めします。 –

関連する問題