drawRect绘图

在Java的Swing开发中,常用Graphics2D来绘图,虽然用代码的方式来绘图会比较繁琐,但是貌似有很多攻城狮都乐在其中。

iOS里的Core Graphics框架作为一个绘图框架,也提供了很多手动绘图的常用方法。

UIView的drawRect就像是Java中的paintComponent重绘方法:

1.开始要获取一个指向当前上下文的指针(CGContextRef)

- (void)drawRect:(CGRect)rect
{
      CGContextRef cr = UIGraphicsGetCurrentContext();
}

2.然后就可以开始绘制了,比如我想画一个圆,初始的数据需要这些

//先是根据调用者的位置计算中心点
CGRect bounds = [self bounds];
CGPoint center;
center.x = bounds.origin.x + bounds.size.width / 2.0;
center.y = bounds.origin.y + bounds.size.height / 2.0;
//然后可以根据rect大小计算圆半径 使其充满圆
float maxRadius = hypot(bounds.size.width, bounds.size.height) / 4.0;

3.利用上下文开始画圆的路径

//设置线条宽度
CGContextSetLineWidth(cr, 15);
//设置线条颜色
[[UIColor redColor] setStroke];
//把参数加入到上下文
CGContextAddArc(cr, center.x, center.y, maxRadius, 0.0, M_PI * 2.0, YES);
//执行绘图,绘图后把路径移除
CGContextStrokePath(cr);

4.最后想往图中写字,并给字体设置阴影偏移

    NSString *text = @"My name is RannieR";
    
    UIFont *font = [UIFont boldSystemFontOfSize:28];
    
    CGRect textRect;
    textRect.size = [text sizeWithFont:font];
    
    textRect.origin.x = center.x - textRect.size.width / 2.0 ;
    textRect.origin.y = center.y - textRect.size.height / 2.0 ;
    
    [[UIColor blackColor] setFill];
    
    CGSize offset = CGSizeMake(4, 3);
    
    CGColorRef color = [[UIColor grayColor] CGColor];
    
    //第三个参数是 模糊效果参数
    CGContextSetShadowWithColor(cr, offset, 2.0, color);
    
    [text drawInRect:textRect withFont:font];





    


你可能感兴趣的:(ios,coreGraphics)