ios Quartz2D使用(画一些简单的图形)(2)

一、画图形(这些都是要继承uiview 重写(void)drawRect:(CGRect)rect 方法,后面会说在viewcontroller中如何画)

1.圆形

  // 圆角矩形
  //   UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(20, 20, 200, 200) cornerRadius:100];


  // 圆弧
    // Center:圆心
    // startAngle:弧度
    // clockwise:YES:顺时针 NO:逆时针
    // 扇形
    CGPoint center = CGPointMake(125, 125);
     UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:100 startAngle:0 endAngle:M_PI_2 clockwise:YES];
    
    // 添加一根线到圆心
    [path addLineToPoint:center];
    
    // 封闭路径,关闭路径:从路径的终点到起点
//    [path closePath];
    
    // 就是画一个圆弧
    //    [path stroke];
    
    // 填充:必须是一个完整的封闭路径,默认就会自动关闭路径
    //  画一个圆饼
    [path fill];

2.柱状图

        w = rect.size.width / (2 * arr.count - 1);
        x = 2 * w * i;
        h = [arr[i] floatValue] / 100.0 * rect.size.height;
        y = rect.size.height - h;
        
        UIBezierPath *path = [UIBezierPath bezierPathWithRect:CGRectMake(x, y, w, h)];
        
        [[self colorRandom] set];
        [path fill];

3.图片和文字绘制到特定图形上面

// 超出裁剪区域的内容全部裁剪掉
    // 注意:裁剪必须放在绘制之前
//    UIRectClip(CGRectMake(0, 0, 50, 50));
    
    UIImage *image = [UIImage imageNamed:@"001"];
    
    // 默认绘制的内容尺寸跟图片尺寸一样大
//    [image drawAtPoint:CGPointZero];
    // 在哪个范围中绘制图片,就是填充 会拉伸
//    [image drawInRect:rect];
    // 平铺整个画布
    [image drawAsPatternInRect:rect];
文字
   // 绘制文字
    
    NSString *str = @"asfdsfsdf";
    // 文字的起点
    // Attributes:文本属性

    NSMutableDictionary *textDict = [NSMutableDictionary dictionary];

    // 设置文字颜色
    textDict[NSForegroundColorAttributeName] = [UIColor redColor];

    // 设置文字字体
    textDict[NSFontAttributeName] = [UIFont systemFontOfSize:30];

    // 设置文字的空心颜色和宽度

    textDict[NSStrokeWidthAttributeName] = @3;

    textDict[NSStrokeColorAttributeName] = [UIColor yellowColor];

    // 创建阴影对象
    NSShadow *shadow = [[NSShadow alloc] init];
    shadow.shadowColor = [UIColor greenColor];
    shadow.shadowOffset = CGSizeMake(4, 4);
    shadow.shadowBlurRadius = 3;
    textDict[NSShadowAttributeName] = shadow;

    // 富文本:给普通的文字添加颜色,字体大小
    [str drawAtPoint:CGPointZero withAttributes:textDict];
    // 绘制在某个区域中,文字长会换行
//       [str drawInRect:rect withAttributes:textDict];

4.图形的一些操作

 // 1.获取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 2.描述路径
   UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(-100, -50, 200, 100)];
    [[UIColor redColor] set];
    // 上下文矩阵操作
    // 注意:矩阵操作必须要在添加路径之前
    //  平移
    CGContextTranslateCTM(ctx, 100, 50);
    // 缩放
    CGContextScaleCTM(ctx, 0.5, 0.5);
    // 旋转
    CGContextRotateCTM(ctx, M_PI_4);
    // 3.把路径添加上下文
    CGContextAddPath(ctx, path.CGPath);
    [[UIColor redColor] set];
    
    
    // 4.渲染上下文
    CGContextFillPath(ctx);

demo地址

你可能感兴趣的:(ios Quartz2D使用(画一些简单的图形)(2))