Quartz2D简单图形

这些天一直准备学绘图和核心动画这块,可一直找不到合适系统的教材,没有大纲,比较纠结,在网上搜了又搜,看着其他的博文写的

第一遍来学习绘制简单的图形

// 若想利用Quartz 2D在View上绘制信息,首先必须有图形上下文,用来保存绘图信息,输出目标。其次,图像上下文与View相关联(这时候图形上下文的输出目标即为关联的View)



// 1.为什么需要在drawrect中绘图? 因为在drawRect:方法中才能取得跟view相关联的图形上下文

// 2.drawRect:方法在什么时候被调用?

   //1.当view第一次显示到屏幕上时(被加到UIWindow上显示出来)

   //2.调用view的setNeedsDisplay或者setNeedsDisplayInRect:时

// 3.绘图顺序  后绘制的图形若与先绘制的图形发生重叠,后绘制的图形覆盖先绘制的图形



- (void)drawRect:(CGRect)rect {

    //画直线

    //获取图像上下文,在此方法调用获取的是layer的上下文

    CGContextRef context=UIGraphicsGetCurrentContext();

    //设置起点

    CGContextMoveToPoint(context, 20, 100);

    //设置终点

    CGContextAddLineToPoint(context, 50, 60);

    CGContextAddLineToPoint(context, 60, 80);

    //设置线条颜色 二选一

   /* [[UIColor yellowColor]set];//设置边框填充颜色都为同一种

    [[UIColor yellowColor] setStroke];//设置边框颜色

    [[UIColor yellowColor] setFill];// 设置填充颜色*/

    CGContextSetRGBStrokeColor(context, 0, 1.0, 0, 1.0);

    //设置填充颜色

    CGContextSetFillColorWithColor(context, [UIColor blueColor].CGColor);

    //设置线条宽度

    CGContextSetLineWidth(context, 5.0);

    //设置起点终点样式为圆角

    CGContextSetLineCap(context,  kCGLineCapRound);

    //设置线条转角样式为圆角

    CGContextSetLineJoin(context, kCGLineJoinRound);

    //渲染到图层上  不调用前面设置的不显示

    //线条边框渲染

    CGContextStrokePath(context);

    //填充 内部填充

//    CGContextFillPath(context);

    

    //画三角

    //设置三个点

    CGContextMoveToPoint(context, 30, 120);

    CGContextAddLineToPoint(context, 50, 200);

    CGContextAddLineToPoint(context, 200, 60);

     CGContextAddLineToPoint(context, 200, 80);

    //设置边框颜色

    CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0);

    //连接起点终点 无的话是只是几个点按顺序相连,起始点并未连接

    CGContextClosePath(context);

    CGContextStrokePath(context);

//    CGContextFillPath(context);

    

    //画矩形

    CGContextAddRect(context, CGRectMake(50, 60, 100, 80));

    [[UIColor blueColor] setStroke];

//    CGContextFillPath(context);

    CGContextStrokePath(context);

    

    //画圆 1参数 上下文 2、3参数 圆中心x、y坐标 4参数 半径 5、6参数起始角度 7参数 0顺时针 1逆时针

    CGContextAddArc(context, 60, 60, 20, 3.1415026/2, 0, 1);

    CGContextStrokePath(context);

    //画椭圆 圆是特殊的椭圆 所以可以用画椭圆的方法来画圆

    CGContextAddEllipseInRect(context, CGRectMake(80, 80, 100, 200));

    CGContextStrokePath(context);

    

    //画圆弧

    CGContextAddArc(context, 160, 160, 50, 3.1415026/2, 0, 1);

    CGContextSetRGBStrokeColor(context, 1.0, 1.0, 0.5, 1.0);

    CGContextClosePath(context);

    CGContextStrokePath(context);

}

 

你可能感兴趣的:(quartz)