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 を指定するところで、このようにすることで、次の描画から影が描かれなくなります。

[ もどる ]