这些天一直准备学绘图和核心动画这块,可一直找不到合适系统的教材,没有大纲,比较纠结,在网上搜了又搜,看着其他的博文写的
第一遍来学习绘制简单的图形
// 若想利用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);
}