首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iPhone在石英绘图与预烘焙图像中的性能差异(我猜这简化为石英与石英)

iPhone在石英绘图与预烘焙图像中的性能差异(我猜这简化为石英与石英)
EN

Stack Overflow用户
提问于 2009-10-22 08:09:30
回答 2查看 2K关注 0票数 4

刚接触Quartz,我对简单形状、渐变和阴影的绘制速度感到好奇;特别是将Quartz绘图函数与iPhone上的Quartz图像绘制进行比较。

假设我需要绘制一个填充、描边和阴影的矩形。我假设导入一个预烘焙的矩形作为PNG并使用drawInRect:或drawAtPoint:绘制它比使用Quartz的绘制函数绘制相同的东西更快,因为后者需要显式计算。另一方面,绘制我假设的图像会增加内存使用和应用程序大小,因为我必须导入图像,然后分配它。这听起来对吗?

除此之外,这两种技术是否都有很大的优点/缺点?作为一个非常熟悉图形程序和全新的Quartz的人,我正在尝试确定在我的代码中使用绘图函数是否有任何优势,而不是预先烘焙整个UI并导入图像。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-22 10:17:52

我有一个类似的问题,所以我对不同的方法进行了计时。在大多数简单的绘图情况下(比如您的矩形示例),从磁盘加载图像似乎比绘制图像稍微慢一些,这可能是因为需要访问磁盘。在这些情况下,我决定使用Quartz绘图例程,因为它们为我提供了灵活性。如果我想在将来更改UI元素的大小(可能是为了支持更大或更高分辨率的显示),我需要重新渲染我的所有图像,其中矢量图形将根据需要进行缩放。

我确实看到了一个显著的性能优势,那就是我画的一个大的径向渐变作为背景。在Shark中,我可以看到CGContextDrawRadialGradient()调用占用了大量的CPU时间。当我用静态图像替换Quartz绘制的径向渐变时,我看到应用程序启动时间显著缩短(此背景是在应用程序启动期间放置的)。奇怪的是,我还看到应用程序内存使用减少了大约0.5MB,我无法完全解释这一点。

如果您想自己测试一下,我强烈建议您使用图像编辑器Opacity,它可以为绘图生成Quartz代码(包括完整的UIView或PNG子类),并输出同一绘图的CALayer。这使得在应用程序中实现这两个路径并对它们进行测试变得很容易。

票数 9
EN

Stack Overflow用户

发布于 2009-10-22 12:06:06

根据您的应用程序结构,还有一种可能可行的中间方法:实现绘制代码,但绘制到一个层中,然后重用它。这样做的优点是不会多次占用CPU时间,但仍然可以保持绘图过程的动态性。

所以,比方说,当平板电脑最终发货时(现在随时!!),你可以稍微修改一下你的绘图参数,以涵盖所有可能的设备,而不是生成一堆不同的静态图像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1604341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档