令我困惑的一个非常基本的事情是CGContext.例如,我可以使用下面的代码绘制一个简单的“U”形状,并在CAShapeLayer中使用它而不引用CGContext. CAShapeLayer默认隐含/提供上下文?
我可能在这里混合了几个iOS / OSX图形API,所以也许有人可以澄清我哪里出错了.
CGPoint pt1 = CGPointMake(100,100);CGPoint pt2 = CGPointMake(150,100);CGPoint pt3 = CGPointMake(150,200);CGPoint pt4 = CGPointMake(190,200);CGPoint pt5 = CGPointMake(190,100);CGPoint pt6 = CGPointMake(210,100);CGPoint pt7 = CGPointMake(210,250);CGPoint pt8 = CGPointMake(100,250);CGPoint pt9 = CGPointMake(100,100);CGMutablePathref path = CGPathCreateMutable();CGPathMovetoPoint(path,nil,pt1.x,pt1.y);CGPathAddlinetoPoint(path,pt2.x,pt2.y);CGPathAddlinetoPoint(path,pt3.x,pt3.y);CGPathAddlinetoPoint(path,pt4.x,pt4.y);CGPathAddlinetoPoint(path,pt5.x,pt5.y);CGPathAddlinetoPoint(path,pt6.x,pt6.y);CGPathAddlinetoPoint(path,pt7.x,pt7.y);CGPathAddlinetoPoint(path,pt8.x,pt8.y);CGPathAddlinetoPoint(path,pt9.x,pt9.y);CAShapeLayer *shapeLayer = [CAShapeLayer layer];[self.vIEw.layer addSublayer:shapeLayer];解决方法 是的,CAShapeLayer会将路径绘制到您的上下文中.
请注意,使用CAShapeLayer时,您使用CGPath,而如果您自己绘制上下文,则可能需要使用CGContext自己的路径绘制函数.
最大的区别是CGContext路径函数将命令直接添加到上下文的当前路径中,当您告诉上下文填充或描边(或显式放弃)路径时将被抛弃,而CGPath对象会保留它们以便再次重用再次 – 例如,如果您更改CAShapeLayer的绘图属性.
当然,即使您要将CGPath绘制到上下文中,也存在使用CGPath的情况.如果命令集永远不会改变,那么这是一个潜在的优化;它使改变路径变得容易;您可以随后迭代其命令(例如,将它们导出到文件).您还可以使用UIBezIErPath编写绘图代码(即使用Objective-C消息),然后向其请求CGPath.
以任何一种方式使用CGContext都没有错,并且可能存在最佳情况,但CAShapeLayer是大多数用途的最简单方法,特别是在Cocoa touch中,每个UIVIEw都有一个CALayer支持,你可以将CAShapeLayer放入.
总结以上是内存溢出为你收集整理的ios – CGContext vs CALayer全部内容,希望文章能够帮你解决ios – CGContext vs CALayer所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)