您的位置:首页 > 其它

根据传入的数据绘制圆环,以及以绘画形式自定义图片为圆形

2016-06-19 10:09 519 查看
</pre></p><p>昨天在家躺着正舒坦那,一哥们又找我了。</p><p>没错,是又。就是之前让我写个小DEMO参考一下圆环绘制的那个人。</p><p>好吧,这次是问我如何自定义绘制一个圆环用来展示数据的比例。</p><p>我当时很惊奇,这个你搜下就会有的还用来问我吗?</p><p>然后他告诉我,还有一个问题。将展示的图片设置为圆形。</p><p>而且是画图的形式来展示。</p><p>好吧。。</p><p>不是很明白为什么这么要求。。</p><p>不过既然没什么事就花了点时间帮他写了一个。。</p><p>详情看代码。。</p><p></p><pre name="code" class="objc">- (void)drawRect:(CGRect)rect {
//图片
UIImage *image = [UIImage imageNamed:@"天空-栏杆"];

//开启上下文
UIGraphicsBeginImageContextWithOptions(CGSizeMake(100, 100), NO, 0.0);

//获取画板
CGContextRef ref = UIGraphicsGetCurrentContext();

//结束时的角度
CGFloat end = M_PI *2;

//设置路径与线长、颜色,绘制方式为stroke,非填充
//此路径为图片外围路径
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(50, 50) radius:40 startAngle:0 endAngle:end clockwise:1];
path.lineWidth = 5;
[[UIColor greenColor]set];

[path stroke];
//path这个路径的end可以根据 传入比例*M_PI*2(360°乘比例), 来设置结束位置。来达到根据传入的数据绘制圆环显示比例大小的要求。
//设置图片要展示的大小的路径
UIBezierPath *path1 = [UIBezierPath bezierPathWithArcCenter:CGPointMake(50, 50) radius:50 startAngle:0 endAngle:end clockwise:1];

//将路径添加到画板上
CGContextAddPath(ref, path1.CGPath);

//裁剪画板,只获取路径范围内的图形
CGContextClip(ref);

//设置图片画在画板的哪个位置上并开始绘画
[image drawAtPoint:CGPointMake(0, 0)];

//获取画好的图片
UIImage *image2 = UIGraphicsGetImageFromCurrentImageContext();

//关闭上下文
UIGraphicsEndImageContext();

//通过imageView展示图片
UIImageView *img = [[UIImageView alloc]initWithImage:image2];

[self addSubview:img];
//展示的结果就是图片被画成了圆形,如果需要写到相册就是下面那一行
//将图片写到相册里
// UIImageWriteToSavedPhotosAlbum(image2, nil, nil, nil);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: