我一直在通过文档阅读但是我并不是立即清楚如何使用CGPath绘制多边形。我需要做的就是在这样的事情上绘制CGPath:
__
\ \
\ \
\__\
有人可以提供一个如何执行此操作的片段吗?
另外我假设CGPathContainsPoint将帮助我确定一个点是否在这样的路径中?或者路径是否必须是一个实体图纸
另外我如何移动cgpath?这就像在cgrect中更改像原点一样容易吗?
谢谢。
-Oscar
答案 0 :(得分:17)
这是如何使用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 :(得分:13)
你应该这样做:
- (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)
。
希望这有帮助。
答案 2 :(得分:5)
请参阅Apple的QuartzDemo应用程序。它具有执行此操作的代码,以及许多其他Quartz绘图函数。
答案 3 :(得分:5)
Draelach 答案更新为 Swift 4:
let path = CGMutablePath()
path.move(to: CGPoint(x: 0, y: 0))
path.addLine(to: CGPoint(x: 20, y: 44))
path.addLine(to: CGPoint(x: 40, y: 0))
path.addLine(to: CGPoint(x: 0, y: 0))
let tri = SKShapeNode(path: path)
答案 4 :(得分:2)
斯坦福在iPhone上的CS193P课程有一个名为HelloPoly的项目可能正是您想要的 - 请参阅class home page获取规范,然后查看视频的实施方式(以及执行作业的人员的Google解决方案) )。