6

如何将 CGContextAddArc 中的所有像素点存储到 NSMutableArray.or 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

存储或当您想在 NSValue 中的 CGPoint 数组中添加点时,

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

现在在检索时,您将如何从数组中的 NSVaule stroe 读取 CGPoint,

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

thePoint 将是您的答案。

于 2012-07-12T05:05:54.207 回答
0

Musthafa,你有几个不同的问题。

第一点是您可能以错误的方式进行此操作。要检查用户是否单击了弧线,您最好使用弧线 (CGPathAddArc) 创建路径,然后使用 CGPathContainsPoint。

接下来,您要确保弧线是您真正想要的,这看起来不像饼图,弧线是饼图外侧的部分,而 close 将连接其末端,对于饼图形状,您需要在中心之间移动。

如果您试图获取闭合弧中的点,我能想到的唯一方法是创建一个 CGBitmapContext,然后渲染到 CGContext 的路径,然后渲染 CGBitmapContextGetData 以获取支持数据。然后,您可以遍历它以获取设置点并将它们添加到您的 NSMutableArray,如 iHungry 建议的那样。

我可能还会质疑为什么要将它们粘贴在可变数组中,因为如果您要遍历它们以进行触摸测试,它可能会变得很慢,最好将它们留在位图中:)

于 2012-07-12T07:42:41.417 回答