画一个百分比的圆

Posted

技术标签:

【中文标题】画一个百分比的圆【英文标题】:Draw a percentage of a circle 【发布时间】:2012-12-16 17:17:42 【问题描述】:

我想在objective-c中画一个像图中的圆圈:

(来源:hostingpics.net)

我只想从底部开始绘制填充相应百分比的蓝色圆圈。 (注意:百分比的范围在 0 到 100 之间)不要担心中心的勾号,它只是在圆形视图上添加的 imageView。

【问题讨论】:

CGContextFillRect()CGContextClipPath() 来救援。 在这种情况下他只需要一个想法,我认为他不知道从哪里开始。 【参考方案1】:

您可以进行 2 次图像查看。一个将包含带有复选标记的圆圈,其余的则是透明的。另一个图像将在其下方,带有一个浅蓝色矩形。随着百分比的增加,您通过修改它的框架来越来越多地提升蓝色矩形。通过顶部图像的透明部分当然可以看到它。

希望这会有所帮助!

【讨论】:

背景颜色不会是素色的【参考方案2】:
// Draw circle of radius r and center X,Y
CGRect r;
r.origin.y = Y-radius;
r.origin.x = X-radius;
r.size.width = 2*radius;
r.size.height 2*radius;

CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextAddEllipseInRect(ctx, r);
CGContextSetFillColor(ctx, CGColorGetComponents([[UIColor lightGray] CGColor]));
CGContextFillPath(ctx);

// Draw a blue color filled path. Below is half circle filled with blue color.
CGContextBeginPath(ctx);
CGContextAddArc(ctx, X, Y, r, -M_PI_2, M_PI_2, 1);
CGContextClosePath(ctx); // could be omitted
CGContextSetFillColorWithColor(ctx, [UIColor blueColor].CGColor);
CGContextFillPath(ctx);

想法是画一个圆并用浅灰色填充它,然后从圆弧绘制和关闭路径(需要任何角度)并用蓝色填充它。

【讨论】:

【参考方案3】:

补充李维斯的建议。

您可以使用CGAffineTransformScale 缩放矩形图像。

例如:

CGAffineTransform transform = self.rectImageView.transform;
float scale = 0.5;
self.rectImageView.transform = CGAffineTransformScale(transform, 1, scale);

这会将图像缩放到 50%

要将其设置回 100%,只需设置 scale = 2。

【讨论】:

以上是关于画一个百分比的圆的主要内容,如果未能解决你的问题,请参考以下文章

圆形百分比进度条效果

jquery怎么画五边形 ,每一个顶点有都代表百分比?

canvas画波浪进度球

饼图绘制

canvas画圆环%显示

在MATLAB中怎么样画扇形图