6

CGContextAddArc のすべてのピクセル ポイントを NSMutableArray. または CGContextRef から NSMutable Array に保存するにはどうすればよいですか

static inline float radians(double degrees) 
{
 return degrees * PI / 180;
}

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGRect parentViewBounds = self.bounds;
    CGFloat x = CGRectGetWidth(parentViewBounds)/2;
    CGFloat y = CGRectGetHeight(parentViewBounds)/2;
    UIColor *rbg=[UIColor redColor];
    CGContextSetFillColor(context, CGColorGetComponents( [rbg CGColor]));
    CGContextMoveToPoint(context, x, y); 
    CGContextAddArc(context, x, y,100,radians(35),radians(105),0); 
        CGContextClosePath(context); 
        CGContextFillPath(context);
// here I want to store All points Containing in the Arc to NSMutableArray


 NSMutableArray *pointsArray=????
        }

画像ここに画像の説明を入力

4

2 に答える 2

0

CGPointをNSValueに格納するか、配列にポイントを追加する場合は、

NSValue *point = [NSValue valueWithCGPoint:CGPointMake(your_X, your_Y)];
[pointsArray addObject:point];

さて、取得時に、配列内のNSVauleストローからCGPointをどのように読み取りますか。

NSValue *getPoint = [pointsArray objectAtIndex:i];
CGPoint thePoint = [getPoint CGPointValue];

thePointがあなたの答えになります。

于 2012-07-12T05:05:54.207 に答える
0

Musthafa、ここにはいくつかの異なる問題があります。

最初のポイントは、おそらくこれを間違った方法で行っているということです。ユーザーがアークをクリックしたかどうかを確認するには、アーク(CGPathAddArc)を使用してパスを作成してから、CGPathContainsPointを使用する方がよいでしょう。

次に、円弧が本当に必要なものであることを確認する必要があります。これはパイのようには見えません。円弧はパイの外側のセクションであり、閉じた部分がその両端を接続します。形、あなたは中心に出入りする必要があります。

閉じた弧のポイントを取得しようとしている場合、これを行うために私が考えることができる唯一の方法は、CGBitmapContextを作成し、次にCGContextへのパスをレンダリングし、次にCGBitmapContextGetDataをレンダリングしてバッキングデータを取得することです。次に、これを繰り返して設定値を取得し、iHungryが提案したようにそれらをNSMutableArrayに追加できます。

タッチテストのためにそれらを反復処理している場合、ビットマップに残しておく方がかなり遅くなる可能性があるため、なぜそれらを可変配列に貼り付けたいのか疑問に思うかもしれません:)

于 2012-07-12T07:42:41.417 に答える