Quartz 2D 详细解说

//// DrawView.m// 01 Draw//// Created by lixi on 15/6/27.// Copyright (c) 2015年 lx. All rights reserved.//#import "DrawView.h"@implementation DrawView/*1.获取上下文2.设置路径(画的图形)3.向上下文件中添加路径4.设置上下文属性(比如画笔的粗细,颜色,,阴影,连接点)5.绘制路径6.释放路径(某些情况)  注意:但凡通过Quartz2D中带有creat/copy/retain方法创建出来的值都必须要释放*/// 作用:绘制// 视图第一次显示的时候调用,以及视图需要更新时调用- (void)drawRect:(CGRect)rect {// Drawing code// rect 参数 是self(当前视图)的 Bounds// NSLog(@"rect :%@", NSStringFromCGRect(rect));// 1.图形上下文 context 画板// UIGraphicsGetCurrentContext() 需要在 drawRect:方法里调用CGContextRef context = UIGraphicsGetCurrentContext();[self drawWord:context];}- (void)drawLine1:(CGContextRef)context {// 2.设置路径CGMutablePathRef path = CGPathCreateMutable();// 设置路径点CGPathMoveToPoint(path, NULL, 0.f, 100.f);CGPathAddLineToPoint(path, NULL, 300.f, 100.f);CGPathAddLineToPoint(path, NULL, 300.f, 200.f);// 3. 向上下文中添加路径CGContextAddPath(context, path);// 4.设置上下文的属性// 线宽CGContextSetLineWidth(context, 1.f);/*设置线条颜色context 上下文red 0 – 1green 0 – 1blue 0 – 1alpha 0 – 1 透明度*/CGContextSetRGBStrokeColor(context, 0.f, 1.f, 0.f, 1.f);// 设置填充色CGContextSetRGBFillColor(context, 1.f, 0.f, 0.f, 1.f);// 5.绘制/*CGPathDrawingMode // 路径绘制模式kCGPathFill // 填充kCGPathStroke // 线条kCGPathFillStroke // 线和填充*/CGContextDrawPath(context, kCGPathFillStroke);// 6.释放路径 (可选)CGPathRelease(path);}- (void)drawLine2:(CGContextRef)context {// 2.设置路径CGMutablePathRef path = CGPathCreateMutable();CGPathMoveToPoint(path, NULL, 0.f, 100.f);CGPathAddLineToPoint(path, NULL, 300.f, 100.f);CGPathAddLineToPoint(path, NULL, 300.f, 200.f);// 3.向上下文中添加路径CGContextAddPath(context, path);// 线宽CGContextSetLineWidth(context, 10.f);// 设置线条颜色CGContextSetRGBStrokeColor(context, 1.f, 0.f, 0.f, 1.f);// 设置端点CGContextSetLineCap(context, kCGLineCapRound);// CGFloat lengths[] = {30, 10}; // 小线段的长度 , 间隙长度/*设置虚线CGContextRef c 上下文CGFloat phase 相位const CGFloat *lengths c数组size_t count 数组元素个数*/// CGContextSetLineDash(context, 0.f, lengths , 2);// 设置连接点的属性CGContextSetLineJoin(context, kCGLineJoinRound);// 向上下文中添加路径CGContextAddPath(context, path);// 绘制CGContextDrawPath(context, kCGPathStroke);}- (void)drawLine3:(CGContextRef)context {// 设置路径CGMutablePathRef path = CGPathCreateMutable();CGPathMoveToPoint(path, NULL, 0.f, 100.f);CGPathAddLineToPoint(path, NULL, 300.f, 100.f);CGPathAddLineToPoint(path, NULL, 300.f, 200.f);// 向上下文中添加路径CGContextAddPath(context, path);// 线宽CGContextSetLineWidth(context, 20.f);// 设置线条颜色CGContextSetRGBStrokeColor(context, 1.f, 0.f, 0.f, 1.f);CGContextAddPath(context, path);// 5.绘制CGContextDrawPath(context, kCGPathFillStroke);// 6.释放路径CGPathRelease(path);//——————————-// 另外一个pathCGMutablePathRef path1 = CGPathCreateMutable();CGPathMoveToPoint(path1, NULL, 160.f, 30.f);CGPathAddLineToPoint(path1, NULL, 160.f, 300.f);CGContextAddPath(context, path1);CGContextSetLineWidth(context, 40.f);CGContextSetRGBStrokeColor(context, 0.f, 0.f, 1.f, 1.f);// 绘制CGContextDrawPath(context, kCGPathStroke);CGPathRelease(path1);}// 绘制三角形- (void)drawTriangle:(CGContextRef)context {CGMutablePathRef path = CGPathCreateMutable();CGPathMoveToPoint(path, NULL, 50.f, 50.f);CGPathAddLineToPoint(path, NULL, 200.f, 200.f);CGPathAddLineToPoint(path, NULL, 50.f, 200.f);// 向上下文中添加路径CGContextAddPath(context, path);// 将路径封闭起来CGContextClosePath(context); // 上下文中存在未封闭的路径,将路径闭合起来// 线宽CGContextSetLineWidth(context, 10.f);// 设置线条颜色// CGContextSetRGBStrokeColor(context, 1.f, 0.f, 0.f, 1.f);[[UIColor greenColor] setStroke];[[UIColor purpleColor] setFill];CGContextAddPath(context, path);// 绘制CGContextDrawPath(context, kCGPathFillStroke);// 释放路径CGPathRelease(path);}- (void)drawRectange:(CGContextRef)context {// 绘制矩形CGContextAddRect(context, CGRectMake(60.f, 100.f, 200.f, 200.f));CGContextSetLineWidth(context, 10.f);CGFloat lengths[] = {20.f, 5.f};CGContextSetLineDash(context, 0, lengths, 2);[[UIColor blueColor] setFill];CGContextDrawPath(context, kCGPathFillStroke);}- (void)drawCircle:(CGContextRef)context {// 矩形内切CGContextAddEllipseInRect(context, CGRectMake(60.f, 100.f, 300.f, 200.f));CGContextDrawPath(context, kCGPathFillStroke);}- (void)drawArc:(CGContextRef)context {/*CGContextRef c 上下文x,y 圆心CGFloat radius 半径CGFloat startAngle 起始角度 0° 是三点钟方向,顺时针方向正值,逆时针方向负值CGFloat endAngle 终止角度int clockwise 时钟方向 0 顺时针, 1 逆时针*/CGContextAddArc(context, 160.f, 240.f, 100.f, 0, M_PI_2, 1);CGContextDrawPath(context, kCGPathStroke);}- (void)drawBenzier:(CGContextRef)content {// CGContextAddQuadCurveToPoint(content, 160.f, 100.f, 300.f, 300.f);// CGContextDrawPath(content, kCGPathStroke);// 两个控制点CGContextAddCurveToPoint(content, 140.f, 100.f, 180.f, 320.f, 300.f, 90.f);CGContextDrawPath(content, kCGPathStroke);}//——————————– (void)drawImage:(CGContextRef)context {UIImage *img = [UIImage imageNamed:@"3eceb860dfdb381b001d17ce7f30fe4c.jpeg"];// [img drawInRect:CGRectMake(60.f, 100.f, 200.f, 200.f)]; // 拉伸压缩[img drawAsPatternInRect:self.bounds]; // 平铺}- (void)drawWord:(CGContextRef)context {NSString *word = @"hehhe";// top- left corner// [word drawAtPoint:CGPointMake(0.f, 20.f) withFont:[UIFont systemFontOfSize:20]];NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];style.alignment = NSTextAlignmentLeft; // 对齐方式NSDictionary *attriButes = @{NSFontAttributeName : [UIFont boldSystemFontOfSize:20],NSParagraphStyleAttributeName : style,NSForegroundColorAttributeName: [UIColor redColor]}; // 字体颜色// [word drawAtPoint:CGPointMake(60.f, 100.f) withAttributes:attriButes];[word drawInRect:CGRectMake(60.f, 100.f, 300.f, 40.f) withAttributes:attriButes];}@end

你看报表时,梅里雪山的金丝猴刚好爬上树尖。

Quartz 2D 详细解说

相关文章:

你感兴趣的文章:

标签云: