我一直在阅读文档直通但它是不是立刻清楚,我如何使用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)

希望这有助于。

其他提示

这是如何创建使用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

这是结果

“三角与CGPath”

请参阅苹果的 QuartzDemo 应用。它这样做的代码,以及许多其他的石英的绘制功能。

<强> Draelach的答案更新为夫特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)

在iPhone上斯坦福大学的CS193P类有一个名为HelloPoly项目,可能正是你想要的 - 看到的的规范,然后看看它是如何实现的视频(和谁做了分配人的Google解决方案)类主页

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top