忍者ブログ
  • 2024.04
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 2024.06
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/05/01 05:50 】 |
CoreGraphicsでフォント描画
フォント描画の仕方。


//フォント指定。postscript名、サイズ、エンコードタイプ
CGContextSelectFont(context, "Helvetica", 36.0, kCGEncodingMacRoman);

//上下反転させるためのマトリクス
CGContextSetTextMatrix(context, CGAffineTransformMakeScale(1.0, -1.0));

//フォントの枠、塗りつぶしなどのタイプ
CGContextSetTextDrawingMode(context, kCGTextFill);

//描画
CGContextShowTextAtPoint(context, 10.0, 30.0, "hello", strlen("hello"));

enum CGTextDrawingMode {
kCGTextFill, //塗りつぶし
kCGTextStroke, //枠だけ
kCGTextFillStroke, //枠と塗りつぶし
kCGTextInvisible, //非表示
kCGTextFillClip, //クリップ範囲の背景と塗りつぶし
kCGTextStrokeClip, //枠と背景
kCGTextFillStrokeClip, //塗りつぶしと枠と背景
kCGTextClip //クリップ範囲内の背景と文字塗りつぶしだけ
};
クリップ範囲ってどう決めるんだ?

テキストエンコーディングをMacRomanにしたい場合、
CGContextSelectFont()
CGContextShowTextAtPoint()

そうでない場合、
CGContextSetFont()
またはCGFontCreateWithPlatformFont()
CGContextSetFontSize()
CGContextShowGlyphsAtPoint()
注意:こちらの方式でフォントをセットした場合、描画はCGContextShowGlyphsAtPoint()を使うこと。
この指定だと、エンコーディングが指定できない。その場合、デフォルトのエンコーディングであるkCGEncodingFontSpecificが使われるため、CGContextShowTextAtPoint()が正しい動作をする保証がないらしい。

グリフを使った描画

CGFontRef helvetica = CGFontCreateWithFontName((CFStringRef)@"Helvetica");
CGContextSetFont(context, helvetica);
CGContextSetFontSize(context, 12.0);
CGContextSetTextDrawingMode(context, kCGTextFill);
// Next we'll display lots of glyphs from the font.
CGGlyph start = 0;
for(int y = 0; y < 20; ++y)
{
CGGlyph glyphs[32];
for(int i = 0; i < 32; ++i)
{
glyphs[i] = start + i;
}
start += 32;
CGContextShowGlyphsAtPoint(context, 10.0, 150.0 + 12 * y, glyphs, 32);
}
CGFontRelease(helvetica);

グリフって何?


公式サンプル



公式リファレンス

PR
【2011/03/19 02:13 】 | iPhone | 有り難いご意見(0) | トラックバック()
<<Inputクラス・実装第2版 | ホーム | CoreGraphics描画命令いろいろ>>
有り難いご意見
貴重なご意見の投稿














虎カムバック
トラックバックURL

<<前ページ | ホーム | 次ページ>>