Core Graphics での描画に影を落とす : Objective-C プログラミング
PROGRAM
Core Graphics での描画に影を落とす
UIView の drawRect: メソッドなどで Core Graphics を使って描画するときに、描画に影を落とすことができます。
影を設定する
影を描く方法は簡単で、描画を行う前に CGContextSetShadowWithColor 関数を使って、影の方向や強さ、色を設定します。
- (void)drawRect:(CGRect)rect
{
// Core Graphics の描画コンテキストを取得します。
CGContextRef context = UIGraphicsGetCurrentContext();
// 描画前に、落とす影を設定します。
UIColor* shadowColor = [UIColor blackColor];
CGSize shadowOffset = CGSizeMake(3.0, 3.0);
CGFloat shadowBlur = 1.5;
CGContextSetShadowWithColor(context, shadowOffset, shadowBlur, shadowColor.CGColor);
// 後は、普通通りに描画を行えば、設定した影が落とされます。
CGContextSetFillColorWithColor(context, [UIColor yellowColor].CGColor);
CGContextFillRect(context, CGRectMake(20.0, 20.0, 120.0, 60.0);
}
このようにすることで、簡単に影を入れることができました。
影の方向は CGSize で指定しますけど、ここにはマイナス方向も出来て、どちらの方向に何ピクセルの影を入れるかという指定ができます。
影の強さ (Blur) は、0.0 であれば影の淵がくっきりと描かれて、そこから値が大きくなるほど輪郭がぼやけて表示されます。
影を解除する
次からの描画に影を落としたくない場合には、次のようにして影の設定を解除できます。
// 色を NULL に設定することで、影の設定を解除できます。
CGContextSetShadowWithColor(context, CGSizeZero, 0.0, NULL);
大事なところは、色に NULL を指定するところで、このようにすることで、次の描画から影が描かれなくなります。
[ もどる ]