使用圆形绘制三角形

时间:2012-11-20 21:04:50

标签: ios ipad drawing uibezierpath

有没有办法让用户在iOS中使用圆圈(透明圆圈)绘制三角形。我正在考虑在圆圈中设置三个相等的点以创建三角形,并且当它拉伸圆圈时三角形构建。也许使用bezierPathWithArcCenter或bezierPathWithOvalInRect。有没有人这样做过?

1 个答案:

答案 0 :(得分:0)

假设您已经有手势识别器或其他系统来捕获用户触摸的位置,那么绘图本身就很简单。

CGContextRef context = UIGraphicsGetCurrentContext();

// Draw circle
CGFloat derivedRadius = self.radius * self.scale;
CGPoint origin = CGPointMake(self.center.x - derivedRadius, self.center.y - derivedRadius);
CGContextAddEllipseInRect(context, CGRectMake(origin.x, origin.y, derivedRadius * 2, derivedRadius * 2));

// Draw triangle
CGFloat t1 = self.rotation;
CGFloat t2 = self.rotation + ((2 * M_PI) / 3);
CGFloat t3 = self.rotation + ((4 * M_PI) / 3);
CGPoint p1 = CGPointMake(self.center.x + cosf(t1) * derivedRadius, self.center.y + sinf(t1) * derivedRadius);
CGPoint p2 = CGPointMake(self.center.x + cosf(t2) * derivedRadius, self.center.y + sinf(t2) * derivedRadius);
CGPoint p3 = CGPointMake(self.center.x + cosf(t3) * derivedRadius, self.center.y + sinf(t3) * derivedRadius);
CGPoint endpoints[] = { p1, p2, p3, p1 };
CGContextAddLines(context, endpoints, 4);

CGContextStrokePath(context);

其中self.radiusself.scaleself.centerself.rotation是捕获用户手势结果的属性。旋转应该是弧度。

相关问题