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