0

目前在我的drawRect:方法中,我在我的点集中的每个点之间画一条线,每个点都表示为CGPoint; 但是,现在我想填写这些设定点区域内的区域。我不知道如何使用quartz api来做到这一点,有没有办法?

现在,积分是有序的。因此可以识别出哪个点代表多边形的第一个点等等。

4

2 回答 2

3

将您的点添加到 UIBezierPath ,然后使用它的填充方法。

于 2013-04-15T02:59:43.977 回答
1

Apple 的此代码示例显示了您需要执行的操作:

-(void)drawInContext:(CGContextRef)context
{
    // Drawing with a white stroke color
    CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0);
    // Drawing with a blue fill color
    CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1.0);
    // Draw them with a 2.0 stroke width so they are a bit more visible.
    CGContextSetLineWidth(context, 2.0);

    CGPoint center;

    // Add a star to the current path
    center = CGPointMake(90.0, 90.0);
    CGContextMoveToPoint(context, center.x, center.y + 60.0);
    for(int i = 1; i < 5; ++i)
    {
        CGFloat x = 60.0 * sinf(i * 4.0 * M_PI / 5.0);
        CGFloat y = 60.0 * cosf(i * 4.0 * M_PI / 5.0);
        CGContextAddLineToPoint(context, center.x + x, center.y + y);
    }
    // And close the subpath.
    CGContextClosePath(context);

    // Now add the hexagon to the current path
    center = CGPointMake(210.0, 90.0);
    CGContextMoveToPoint(context, center.x, center.y + 60.0);
    for(int i = 1; i < 6; ++i)
    {
        CGFloat x = 60.0 * sinf(i * 2.0 * M_PI / 6.0);
        CGFloat y = 60.0 * cosf(i * 2.0 * M_PI / 6.0);
        CGContextAddLineToPoint(context, center.x + x, center.y + y);
    }
    // And close the subpath.
    CGContextClosePath(context);

    // Now draw the star & hexagon with the current drawing mode.
    CGContextDrawPath(context, drawingMode);
}

请注意,这是在对类似问题的回答中提到的。

于 2013-04-15T03:07:39.397 回答