1.
// 提示,使用Ref声明的对象,不需要用* // 1. 获取上下文-UIView对应的上下文 CGContextRef context = UIGraphicsGetCurrentContext(); // 2. 创建可变的路径并设置路径 /** 注意:当我们开发动画的时候,通常需要指定对象运动的路线,然后由动画方法负责实现动画效果 因此,在动画开发中,需要熟练使用路径 */ CGMutablePathRef path = CGPathCreateMutable(); // 划线-> // 1) 设置起始点 CGPathMoveToPoint(path, NULL, 50, 50); // 2) 设置目标点 CGPathAddLineToPoint(path, NULL, 200, 200); CGPathAddLineToPoint(path, NULL, 50, 200); // 3) 封闭路径 // a) 直接指定目标点 // CGPathAddLineToPoint(path, NULL, 50, 50); // b) 使用关闭路径方法 CGPathCloseSubpath(path); // 3. 将路径添加到上下文 CGContextAddPath(context, path); // 4. 设置上下文属性 /* 设置线条颜色 red 0 ~ 1.0 red / 255 green 0 ~ 1.0 green / 255 blue 0 ~ 1.0 blue / 255 alpha 透明度 0 ~ 1.0 0 - 完全透明 1.0 - 完全不透名 提示: 1) 在使用rgb颜色设置时,最好不要同时指定 rgb 和 alpha,否则会对性能造成一定影响 2) 默认线条和填充颜色都是黑色 */ CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0); CGContextSetRGBFillColor(context, 0.0, 1.0, 0.0, 1.0); // 设置线条宽度 CGContextSetLineWidth(context, 5.0); // 设置线条的顶点样式 CGContextSetLineCap(context, kCGLineCapRound); // 设置线条的连接点样式 CGContextSetLineJoin(context, kCGLineJoinRound); // 设置线条的虚线样式 /** 虚线的参数 context phase 相位,虚线起始的位置,通常使用0即可,从头开始画虚线 lengths 长度的数组 count lengths数组的个数 */ CGFloat lengths[2] = {20.0, 10.0}; CGContextSetLineDash(context, 0.0, lengths, 2); // 5. 绘制路径 /** kCGPathStroke: 画线(空心) kCGPathFill: 填充(实心) kCGPathFillStroke: 即画线又填充 */ CGContextDrawPath(context, kCGPathFillStroke); // 6. 释放路径 CGPathRelease(path);
2,使用 UIBezierPath 拼接路径
- (void)drawSupernene { // 1.获取上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 2.拼接路径 UIBezierPath *path = [UIBezierPath bezierPath]; CGPoint startP = CGPointMake(10, 10); [path moveToPoint:startP]; [path addLineToPoint:CGPointMake(125, 125)]; [path addLineToPoint:CGPointMake(240, 10)]; // 从路径的终点连接到起点 [path closePath]; // [path addLineToPoint:startP]; // 3.把路径添加到上下文 CGContextAddPath(ctx, path.CGPath); [[UIColor blueColor] setFill]; [[UIColor redColor] setStroke]; CGContextSetLineWidth(ctx, 15); // 4.渲染上下文 // CGContextStrokePath(ctx); // CGContextFillPath(ctx); // 即填充又描边 kCGPathFillStroke CGContextDrawPath(ctx, kCGPathFillStroke); }
浙公网安备 33010602011771号