Skip to main content
 首页 » 编程设计

swift之CGContextDrawPath 不会填充

2024年01月01日136itcoder

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

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 的类的 Playground 上,没什么特别的。

请您参考如下方法:

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