COCOA備忘
これは自分のための備忘です。すみません。
- Resources フォルダのファイルパスをプログラム実行時に取得するコード
- [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"extension"]
- CGLayer上にテキストを出力する方法。
NSViewなどに出力する時はNSStringのdrawInRectが使えるが、CGLayerに出力するケースには使えない。この場合CoreTextを使う方法が簡単そうであった。
- NSAttributedStringを生成
NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:@"こんにちは" attributes:fontAttributes];
- CTLineCreateWithAttributedStringを使って CTLineRefを生成
CTLineRef line = CTLineCreateWithAttributedString((CFAttributedStringRef)attrStr);
- CGContextSetTextPositionを使って出力位置を指定
CGContextSetTextPosition(context, pt.x, pt.y);
- CTLineDrawを使って文字を出力
CTLineDraw(line, context);
- メモリの解放
CFRelease(line);
[attrStr release];
- イメージの特定の色を透過させる方法。
このような処理を Maskingと呼ぶ。
rect はNSRect型で表示したい場所をさしている。
ctx はグラフィックコンテキストをさしている。
- 元のイメージが NSImage *nsimg に生成済みだとする。
これからCGImageRefを取得する。
CGImageRef cgimg = [nsimg CGImageForProposedRect:&rect context: ctx hints: [[NSDictionary alloc] init]];
- マスキングカラーを設定する
CGFloat maskingColors[6] = {255,255,255,255,255,255};
//左から二つずつ組となりそれぞれR,G,Bの範囲を示している。
- マスキングをかけたイメージを生成する
CGImageRef maskedImage = CGImageCreateWithMaskingColors(cgimg, maskingColors);
- コンテキストに描く
CGContextDrawImage(ctx, rect, maskedImage);
0 件のコメント:
コメントを投稿