IOS-Core Graphic 画图

*重新定义UIView 并在drawRect:(CGRect) rect;中绘制

1.绘制路径

_context=UIGraphicsGetCurrentContext();

    CGMutablePathRef path=CGPathCreateMutable();
    
    CGPathMoveToPoint(path, NULL, 50, 50);
    CGPathAddLineToPoint(path, NULL, 150, 150);
    CGPathAddLineToPoint(path, NULL, 50, 150);
    CGPathCloseSubpath(path);
    
    CGContextAddPath(_context, path);
    
    CGFloat myColor[4]={1.0f,1.0f,0,1.0f};
    CGContextSetFillColor(_context,myColor);
    CGContextSetStrokeColor(_context, myColor);
    CGContextSetShouldAntialias(_context, NO);
    CGContextSetLineWidth(_context, 15.0);
    CGContextSetLineJoin(_context, kCGLineJoinRound);
    
    CGContextDrawPath(_context, kCGPathStroke);
    
    CGPathRelease(path);
    CGContextRelease(_context);

2.绘制矩形

    CGRect rect2=CGRectMake(0, 0, 200, 200);
    CGContextSetStrokeColorWithColor(_context, [UIColor redColor].CGColor);
    CGContextSetLineWidth(_context, 2.0);
    CGContextStrokeRect(_context, rect2);

3.绘制渐变

_context=UIGraphicsGetCurrentContext();
    
    //颜色模式
    CGColorSpaceRef colorSpace=CGColorSpaceCreateDeviceRGB();
    
    //构建颜色值
    NSArray *colors=@[(__bridge id)[UIColor redColor].CGColor,(__bridge id)[UIColor greenColor].CGColor];
    //颜色点的位置
    CGFloat location[2]={0,1};
    
    //设置渐变模式
    CGGradientRef gradient=CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)colors,location);
    
    CGContextSaveGState(_context);
    
    CGRect rect2=CGRectMake(0, 0, 150, 150);
    //绘制区域
    CGContextAddRect(_context, rect2);
    //区域裁剪
    CGContextClip(_context);
    
    //裁剪位置
    CGContextDrawLinearGradient(_context, gradient, CGPointMake(0, 0), CGPointMake(150, 150),kCGGradientDrawsAfterEndLocation);
    
    CGContextRestoreGState(_context);
    
    //释放资源
    CGColorSpaceRelease(colorSpace);
    CGGradientRelease(gradient);
    
    
    CGContextRelease(_context);

4.绘制文字

</pre><pre name="code" class="objc">NSString *str=[UIFont fontWithName:@"Gill Sans" size:30];
    NSString *drawText=@"hello !";
    [drawText drawAtPoint:CGPointMake(30, 100) withFont:str];

5.绘制图片

UIImage *image=[UIImage imageNamed:@"头像2.png"];
    
    [image drawAtPoint:CGPointMake(30, 30)];
    
    CGImageRelease([image CGImage]);

6.贝塞尔曲线绘制

    //绘制线
    UIBezierPath *path=[UIBezierPath bezierPath];
    [path moveToPoint:CGPointMake(30, 30)];
    [path addLineToPoint:CGPointMake(30, 120)];
    [path addLineToPoint:CGPointMake(120, 120)];
    [path closePath];

    //绘制圆
    UIBezierPath *path=[UIBezierPath bezierPathWithArcCenter:CGPointMake(100, 100) radius:100.0 startAngle:0 endAngle:180 clockwise:YES];
    //绘制矩形
    UIBezierPath *path=[UIBezierPath bezierPathWithRect:CGRectMake(20, 20, 150, 150)];
    
    //绘制椭圆
    UIBezierPath *path=[UIBezierPath bezierPathWithOvalInRect:CGRectMake(10, 10, 120, 60)];
    //设置颜色
    [[UIColor redColor]set];
    
    path.lineWidth=5;
    [path fill];
    [[UIColor yellowColor]set];
    [path stroke];

7.保存绘制环境,在绘制过程中 属性可能需要保存到栈中 这时候调用CGContextSaveGState进行保存,

并在需要的时候通过CGContextRestoreGState进行恢复。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。