ios – CGContext vs CALayer

ios – CGContext vs CALayer,第1张

概述我正在尝试使用Quartz 2D并查看在线书籍 Quartz 2D Graphics for Mac OS X Developers. 令我困惑的一个非常基本的事情是CGContext.例如,我可以使用下面的代码绘制一个简单的“U”形状,并在CAShapeLayer中使用它而不引用CGContext. CAShapeLayer默认隐含/提供上下文? 我可能在这里混合了几个iOS / OSX图形AP 我正在尝试使用Quartz 2D并查看在线书籍 Quartz 2D Graphics for Mac OS X Developers.

令我困惑的一个非常基本的事情是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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1052536.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存