我一直在阅读通过文档,但它并不是立即清楚如何使用CGPath绘制多边形。所有我需要做的是汲取CGPath周围是这样的:如何用CGPath绘制多边形?
__
\ \
\ \
\__\
任何人都可以请提供关于如何做到这一点的片段?
此外,我认为CGPathContainsPoint将帮助我确定一个点是否这样的路径里面?还是确实的路径必须是固体描绘
此外,我怎么能左右移动cgpath?就像在cgrect中那样改变起源一样简单吗?
谢谢。
-Oscar
我一直在阅读通过文档,但它并不是立即清楚如何使用CGPath绘制多边形。所有我需要做的是汲取CGPath周围是这样的:如何用CGPath绘制多边形?
__
\ \
\ \
\__\
任何人都可以请提供关于如何做到这一点的片段?
此外,我认为CGPathContainsPoint将帮助我确定一个点是否这样的路径里面?还是确实的路径必须是固体描绘
此外,我怎么能左右移动cgpath?就像在cgrect中那样改变起源一样简单吗?
谢谢。
-Oscar
你应该做的是这样的:
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
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);
for(int idx = 0; idx < self.points.count; idx++)
{
point = [self.points objectAtIndex:idx];//Edited
if(idx == 0)
{
// move to the first point
CGContextMoveToPoint(context, point.x, point.y);
}
else
{
CGContextAddLineToPoint(context, point.x, point.y);
}
}
CGContextStrokePath(context);
}
注意这里,点是要绘制的多边形点的阵列。所以它应该是圆形的路径,如:你正在绘制一个三角点(x1, x2, x3)
然后你应该传入数组(x1, x2, x3, x1)
。
希望这会有所帮助。
斯坦福大学的iPhone上的CS193P课程有一个名为HelloPoly的项目,可能正是你想要的 - 看规范的class home page,然后看视频是如何实现的(以及来自执行任务的人的谷歌解决方案)。
见苹果的应用QuartzDemo。它具有执行此操作的代码以及许多其他Quartz绘图函数。
这是如何创建使用CGPath一个三角形的例子,你只需要放点。
var path = CGPathCreateMutable()
CGPathMoveToPoint(path, nil, 0, 0) //start from here
CGPathAddLineToPoint(path, nil, 20, 44)
CGPathAddLineToPoint(path, nil, 40, 0)
CGPathAddLineToPoint(path, nil, 0, 0)
//and to use in SpriteKit, for example
var tri = SKShapeNode(path: path)
var color = NSColor.blueColor()
tri.strokeColor = color
tri.fillColor = color
这是结果
+1实际使用CGPath像想要的提问者。 – Tim 2014-08-30 01:30:54
你不要在这里引用一个数组,你刚才反复添加相同点。 – 2010-02-12 05:48:40
@大卫我以为这是理解 – 2010-02-12 11:00:58
谢谢你的帮助。 – 2010-02-12 15:32:47