CGContextDrawPath不会填写

时间:2015-04-18 11:09:38

标签: swift core-graphics

我试图填充我绘制的三角形,但它们并没有填充。下面是在上下文中绘制的代码,正如您在图片中看到的那样,路径描边很好。

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的类的游乐场中发生的,没什么特别的。

1 个答案:

答案 0 :(得分:3)

每次调用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)