プログラマメモ2 - programmer no memo2

刻印文字っぽいのその1 2011/10/18

刻印文字っぽいのにチャレンジ


CGContextSetShadowWithColorをいろいろ駆使するとコーディングでいろいろ表現できる。
CSS3?のtext-shadow?で表現していることを参考にしています。
- (void)drawRect:(CGRect)rect { NSLog(@"*** override drawRect!!"); // コンテキストをゲット CGContextRef context = UIGraphicsGetCurrentContext(); { /* * グラデーション */ // コンテクスト保存 CGContextSaveGState(context); if(TRUE){// CGGradientを生成する CGGradientRef gradient; CGColorSpaceRef colorSpace; size_t num_locations = 2; CGFloat locations[2] = { 0.0, 1.0 }; // FFA500 FF4500 CGFloat components[8] = { 0xFF/255., 0xA5/255., 0x00/255., 1.0, // Start color 0xFF/255., 0x45/255., 0x00/255., 1.0 }; // End color colorSpace = CGColorSpaceCreateDeviceRGB(); gradient = CGGradientCreateWithColorComponents(colorSpace, components, locations, num_locations); CGPoint startPoint = CGPointMake(self.frame.size.width/2, 0.0); CGPoint endPoint = CGPointMake(self.frame.size.width/2, self.frame.size.height); CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0); // GradientとColorSpaceを開放する CGColorSpaceRelease(colorSpace); CGGradientRelease(gradient); } // コンテクスト復元 CGContextRestoreGState(context); } { /* * 文字列を描画して影付けしている * */ // コンテクスト保存 CGContextSaveGState(context); UIColor *color1 = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.2]; UIColor *color2 = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.8]; CGContextSetShadowWithColor(context, CGSizeMake(-1.0f, 1.0f), 0.0f, [color1 CGColor]); CGContextSetShadowWithColor(context, CGSizeMake(1.0f, 1.0f), 0.0f, [color2 CGColor]); CGContextSetRGBFillColor (context, 0, 0, 0, 1); // UIFont *font = [UIFont fontWithName:@"Helvetica-Bold" size:40]; NSString *str = @"HelooWorkd"; [str drawAtPoint:CGPointMake(10, 10) withFont:font]; // コンテクスト復元 CGContextRestoreGState(context); } }

: