0

iOS でユーザーが円 (透明な円) を使用して三角形を描画できるようにする方法はありますか。三角形を作成するために円に3つの等しい点を設定し、円を伸ばすと三角形が構築されることを考えていました。bezierPathWithArcCenter または bezierPathWithOvalInRect を使用している可能性があります。誰もこれをやったことがありますか?

4

1 に答える 1

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.scale、、、、self.centerおよびself.rotationは、ユーザーのジェスチャの結果をキャプチャするプロパティです。回転はラジアンで行う必要があります。

于 2012-11-20T21:45:36.650 に答える