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)
}
我把这个函数调用了两次,输出是这个。
我在看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)
啊谢谢,这是有道理的。它是如何找出关闭三角形的?或CGContextAddLineToPoint也移动当前点? – chris
@chris:是的,CGContextAddLineToPoint()附加从当前点到给定点的线段,并使新点成为当前点。 CGContextClosePath()将当前点的线段追加到子路径的初始点。 –