目前在我的drawRect:
方法中,我在我的点集中的每个点之间画一条线,每个点都表示为CGPoint
; 但是,现在我想填写这些设定点区域内的区域。我不知道如何使用quartz api来做到这一点,有没有办法?
现在,积分是有序的。因此可以识别出哪个点代表多边形的第一个点等等。
目前在我的drawRect:
方法中,我在我的点集中的每个点之间画一条线,每个点都表示为CGPoint
; 但是,现在我想填写这些设定点区域内的区域。我不知道如何使用quartz api来做到这一点,有没有办法?
现在,积分是有序的。因此可以识别出哪个点代表多边形的第一个点等等。
将您的点添加到 UIBezierPath ,然后使用它的填充方法。
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);
}
请注意,这是在对类似问题的回答中提到的。