CGContextDrawPath不会填充

问题描述:

我想填充一些我绘制的三角形,但是它们没有填充。下面是在上下文中绘制的代码,正如您在图片中看到的那样,路径笔画很好。CGContextDrawPath不会填充

func draw(context:CGContextRef) { 
    CGContextBeginPath(context) 
    CGContextMoveToPoint(context, self.peak.x, self.peak.y) 
    CGContextAddLineToPoint(context, self.left.x,self.left.y) 
    CGContextMoveToPoint(context, self.left.x, self.left.y) 
    CGContextAddLineToPoint(context, self.right.x,self.right.y) 
    CGContextMoveToPoint(context, self.right.x, self.right.y) 
    CGContextAddLineToPoint(context, self.peak.x,self.peak.y) 
    CGContextSetStrokeColorWithColor(context,UIColor.blackColor().CGColor) 
    CGContextSetFillColorWithColor(context,UIColor.redColor().CGColor) 
    CGContextDrawPath(context, kCGPathFillStroke) 
} 

我把这个函数调用了两次,输出是这个。

enter image description here

我在看Quartz2D节目指南,但不明白为什么这会不会继续进行。这只发生在继承自UIView的类中的操场上,没有什么奇特的。

CGContextMoveToPoint()每次调用开始一个新的子路径, 然后将其填满,如果你已经关闭了它(并没有什么 看到,如果你填单线段)。要中风和填充一个三角形,请使用:

CGContextBeginPath(context) 

CGContextMoveToPoint(context, self.peak.x, self.peak.y) 
CGContextAddLineToPoint(context, self.left.x,self.left.y) 
CGContextAddLineToPoint(context, self.right.x,self.right.y) 
CGContextClosePath(context) 

CGContextSetStrokeColorWithColor(context,UIColor.blackColor().CGColor) 
CGContextSetFillColorWithColor(context,UIColor.redColor().CGColor) 
CGContextDrawPath(context, kCGPathFillStroke) 
+0

啊谢谢,这是有道理的。它是如何找出关闭三角形的?或CGContextAddLineToPoint也移动当前点? – chris

+0

@chris:是的,CGContextAddLineToPoint()附加从当前点到给定点的线段,并使新点成为当前点。 CGContextClosePath()将当前点的线段追加到子路径的初始点。 –