2015.12.7 Objective-c CoreGraphic

#import "myView.h"

@implementation myView

- (void)drawRect:(CGRect)rect {
    NSLog(@"drawRect被调用了");
//    [self drawLine];
    CGContextRef context = UIGraphicsGetCurrentContext();
//    [self drawRectWithContext: context];
//    [self drawArc:context];
    [self drawCurve:context];
}

-(void) drawLine
{
    //获取图形上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    //设置线的起点位置
    CGContextMoveToPoint(context, 0, 0);
    //添加线段到点
    CGContextAddLineToPoint(context, 375/2.0, 667/2.0);
    CGContextAddLineToPoint(context, 375, 0);
    //绘制闭合路径
    CGContextClosePath(context);
    
    CGContextMoveToPoint(context, 375/2.0, 667/2.0);
    CGContextAddLineToPoint(context, 375/2.0, 667);
    
    [[UIColor redColor]set];
    
    //设置线条宽度
    CGContextSetLineWidth(context, 5.0);
    //设置填充颜色
    CGContextSetRGBFillColor(context, 0, 0, 1, 1);
    
    //渲染显示到view上
    CGContextDrawPath(context, kCGPathFillStroke);
    
}

-(void) drawRectWithContext : (CGContextRef)context
{
    //确定矩形图像的大小位置
    CGRect rect = CGRectMake(20, 20, 335, 50);
    CGContextAddRect(context, rect);
    //设置矩形的属性
    [[UIColor blueColor]set];
    //绘制
    CGContextDrawPath(context, kCGPathFillStroke);
}

#pragma mark 绘制椭圆
-(void)drawEllipse : (CGContextRef)context
{
    CGRect rect = CGRectMake(50, 50, 275, 200);
    CGContextAddEllipseInRect(context, rect);
    //设置属性
    [[UIColor purpleColor]set];
    //绘制
    CGContextDrawPath(context, kCGPathFillStroke);
}

#pragma mark 绘制弧
-(void) drawArc : (CGContextRef)context
{
    /*
     x: 中心点x坐标
     y: 中心点y坐标
     radius: 半径
     startAngle: 起始弧度
     endAngle: 结束弧度
     clockwise: 是否逆时针绘制, 0则顺时针绘制
     */
    CGContextAddArc(context, 375/2.0, 667/2.0, 100, 0.0, M_PI_2, 1);
    //设置属性
    [[UIColor orangeColor]setFill];
    //绘制
    CGContextDrawPath(context, kCGPathStroke);
}

#pragma mark 绘制贝塞尔曲线
-(void) drawCurve : (CGContextRef) context
{
    CGContextMoveToPoint(context, 20, 500);
    /*
     cp1x: 第一个控制点x坐标
     cp1y: 第一个控制点y坐标
     cp2x: 第二个控制点x坐标
     cp2y: 第二个控制点y坐标
     x: 结束点x坐标
     y: 结束点y坐标
     */
    CGContextAddCurveToPoint(context, 20, 300, 295, 500, 355, 300);
    //设置属性
    [[UIColor yellowColor]setFill];
    [[UIColor redColor]setStroke];
    
    //第一条切线
    CGContextMoveToPoint(context, 20, 500);
    CGContextAddLineToPoint(context, 20, 300);
    //第二条切线
    CGContextMoveToPoint(context, 355, 300);
    CGContextAddLineToPoint(context, 295, 500);
    
    //绘制
    CGContextDrawPath(context, kCGPathFillStroke);
    
    
}

//一个控制点的贝塞尔曲线
-(void) drawOneCurve : (CGContextRef) context
{
    //移动到曲线起始位置
    CGContextMoveToPoint(context, 20, 100);
    CGContextAddQuadCurveToPoint(context, 187.5, 0, 355, 100);
    [[UIColor yellowColor]setFill];
    [[UIColor redColor]setStroke];
    //绘制
    CGContextDrawPath(context, kCGPathFillStroke);
}





@end


你可能感兴趣的:(2015.12.7 Objective-c CoreGraphic)