- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试在我的 iOS 应用程序中创建下面的圆圈。我知道如何制作圆圈,但不完全确定如何沿着弧线获得点。它必须是代码而不是图像。下面也是我目前拥有的代码。
- (void)drawRect:(CGRect)rect
{
CGPoint point;
point.x = self.bounds.origin.x + self.bounds.size.width/2;
point.y = self.bounds.origin.y + self.bounds.size.height/2;
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
CGRect circle = CGRectMake(point.x/2,point.y-point.x/2,point.x,point.x);
CGContextAddEllipseInRect(context, circle);
CGContextStrokePath(context);
for (int i = 0; i<8; i++) {
CGRect circleMini = CGRectMake(??????,??????,point.x/4,point.x/4);
CGContextAddEllipseInRect(context, circleMini);
CGContextStrokePath(context);
}
}
更新回答
float cita = 0;
for (int i = 0; i<8; i++) {
CGPoint pointCir = CGPointMake(point.x/2 + radius * cos(cita) , (point.y-point.x/2) + radius * sin(cita) );
CGRect circleMini = CGRectMake(pointCir.x,pointCir.y,radius/4,radius/4);
CGContextAddEllipseInRect(context, circleMini);
CGContextStrokePath(context);
cita += M_PI / 4.0;
}
最佳答案
如果 (x,y) 是圆心,r 是大圆的半径,则第 i 个外圆的圆心将是:
center(i) = ( x + r * cos(cita) , y + r * sin(cita) )
从 0 开始 cita 并为下一个圆(或 45 度)递增 PI/4 弧度
工作实现
CGFloat cita = 0;
CGFloat bigCircleRadius = point.x / 2.0;
CGFloat smallCircleRadius = bigCircleRadius / 4.0;
for (int i = 0; i < 8; i++) {
CGPoint smallCircleCenter = CGPointMake(point.x + bigCircleRadius * cos(cita) - smallCircleRadius/2.0 , point.y + bigCircleRadius * sin(cita) - smallCircleRadius / 2.0 );
CGRect smallCircleRect = CGRectMake(smallCircleCenter.x,smallCircleCenter.y,smallCircleRadius,smallCircleRadius);
CGContextAddEllipseInRect(context, smallCircleRect);
CGContextStrokePath(context);
cita += M_PI / 4.0;
}
编辑:添加了实现并重命名了变量。
关于iOS 画圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15235302/
我正在尝试在我的 iOS 应用程序中创建下面的圆圈。我知道如何制作圆圈,但不完全确定如何沿着弧线获得点。它必须是代码而不是图像。下面也是我目前拥有的代码。 - (void)drawRect:(CGR
HTML: 06 december 2013 item2 item3 item4
我正在尝试在 mousePressed 事件上绘制具有随机颜色和随机直径的圆圈,但是当我尝试稍微组织我的代码时遇到了一些问题“将我的代码分成类” . Controller 类 public class
我使用 Android MapBox SDK 5.1.0-SNAPSHOT。如何用坐标和以米为单位的半径绘制圆? 有绘制多边形的想法。但这是非常有问题的。 最佳答案 正如 Zugaldia 所回答的那
使用以下代码绘制圆圈(取自 Google Play 服务“ map ”示例): PolylineOptions options = new PolylineOptions(); int
我是一名优秀的程序员,十分优秀!