[ R値 , G値 , B値 , A値 , R値 , G値 , B値 , A値 , ……]2つの色を使う場合は、計8個の値が用意されます。ここでは3色を使っているので計12個の値が用意されています。これらの色値は、塗りつぶしの際に用いられる順番に用意してください。
CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
CGGradientCreateWithColorComponents(CGColorSpaceRef値,
色の配列, 配置の配列, 色数 );
CGRect r1 = CGRectMake(20.0 , 20.0, 100.0, 100.0);今回は、もっと簡単にクリッピングを用意してあります。「CGContextClipToRect」というのは、第2引数に指定した四角い領域をクリップする関数です。今回はグラディエーションのサンプルなので、とりあえずクリッピングはこれでいいでしょう。興味のある人は、パスを使ってもっと複雑な図形を作って塗りつぶしてみるとよいでしょう。
CGContextClipToRect(context, r1);
CGPoint p1 = CGPointMake(20.0, 20.0);これでグラディエーションの描画が行えました。注意したいのは最後の「描画オプション」というものですね。これは、描画開始位置・終了位置の外側の塗りつぶしをどうするか指定するもので、 kCGGradientDrawsBeforeStartLocation、 kCGGradientDrawsAfterEndLocation といった値が用意されています。が、まぁとりあえずゼロを指定しておいていいでしょう。
CGPoint p2 = CGPointMake(120.0, 120.0);
CGContextDrawLinearGradient(context,
gradient, p1, p2, 0);
CGContextDrawRadialGradient( CGContextRef,グラディエーションの開始位置・終了位置の他、開始位置と終了位置の半径も指定しておきます。この2つの関数で、基本的なグラディエーションは行えるようになるでしょう。
CGGradientRef, 開始位置, 半径, 終了位置, 半径, オプション );
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
※グラディエーションさせる - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGFloat colors[] = { 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0 }; CGFloat locs[] = {0.0, 0.5, 1.0}; CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB(); CGGradientRef gradient = CGGradientCreateWithColorComponents (space,colors, locs, 3); CGRect r1 = CGRectMake(20.0 , 20.0, 100.0, 100.0); CGContextClipToRect(context, r1); CGPoint p1 = CGPointMake(20.0, 20.0); CGPoint p2 = CGPointMake(120.0, 120.0); CGContextDrawLinearGradient(context, gradient, p1, p2, 0); CGGradientRelease(gradient); CGColorSpaceRelease(space); }
<< 前へ |