- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在为我的 iOS5 应用程序创建一些 CGLayer,如下所示:
layer_1 = CGLayerCreateWithContext (context,self.bounds.size, NULL);
offlineContext_1 = CGLayerGetContext (layer_1);
layer_2 = CGLayerCreateWithContext (context,self.bounds.size, NULL);
offlineContext_2 = CGLayerGetContext (layer_2);
layer_3 = CGLayerCreateWithContext (context,self.bounds.size, NULL);
offlineContext_3 = CGLayerGetContext (layer_3);
对于我绘制到 offline_contexts 的计时器的每一步,当所有绘图完成后,我通过调用将所有层收集到一个层中:
CGContextDrawLayerAtPoint (context, CGPointZero, layer_1);
CGContextDrawLayerAtPoint (context, CGPointZero, layer_2);
CGContextDrawLayerAtPoint (context, CGPointZero, layer_3);
这很好用。第 1 层的内容似乎被第 2 层的内容 overdraw ,然后第 3 层覆盖前两层。所有绘图都是使用如下调用完成的:
CGContextAddArc(context,cx,cy,radius,-fromDir,toDir,1-curve);
出于性能原因,我用图像替换了很多像上面这样的重复绘图命令,这样结果应该是相同的,但是我告诉图像自己绘制 20 次,而不是绘制 CGContextAddArc() 20 次:
[myArcImage drawAtPoint: loc];
然而,随着这一变化,叠加的顺序似乎发生了变化。图像最终确实会被绘制到集体 View 中,但只有那些不覆盖绘制到其他上下文的其他线条和弧线的图像部分。我玩过在 drawAtPoint 变体中使用混合,但这只会影响图像的可见部分。
关于为什么直线和圆弧覆盖其他层中的内容但图像不覆盖,有什么想法吗?
非常感谢
最佳答案
好吧,我突然意识到我在做什么。我绘制的弧线和线类似于上面的 CGContextAddArc() 调用,该调用将要绘制的上下文作为参数。当我切换到绘制图像时, drawAtPoint() 方法没有将上下文作为参数。相反,它将图像绘制到当前上下文,在我的例子中是当前 UIView 的上下文。
我的问题的解决方案是用推送/弹出上下文调用包装 drawAtPoint 调用:
UIGraphicsPushContext(correct_context);
[myArcImage drawAtPoint: loc];
UIGraphicsPopContext();
关于ios - 透明度和 CGLayers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10937263/
我正在使用 CGlayers 进行绘图,如文档所述,这是在 Canvas 上渲染绘图的更有效方式。 我基本上是绘制到 CGlayers 中,然后使用 CGContextDrawLayerInRect
我正在使用 CGlayers 进行绘图。我已经实现了绘图部分,用户将在其中绘制的 drawingView(canvas) 是动态的,我的意思是,用户可以增加/减少 drawingView(Canvas
我正在为我的 iOS5 应用程序创建一些 CGLayer,如下所示: layer_1 = CGLayerCreateWithContext (context,self.bounds.size, NUL
我想从同一个 for 循环中将对象绘制到两个单独的 CGLayer,但不确定如何执行此操作。 例如,我想在三个蓝色圆圈后面画三个橙色圆圈,橙色圆圈在一层,蓝色圆圈在另一层。以下代码会将每个圆圈放在前一
最终我正在开发一个在 iPhone 上使用的方框模糊功能。 该函数将获取 UIImage 并首先在侧面绘制透明副本,然后获取该图像并在上方和下方绘制透明副本,返回一个非常模糊的图像。 阅读Drawin
我正在画几个CGPaths在iPad 上的drawRect 方法中的Cocoa View 中。我开始将它们直接绘制到 UIGraphicsGetCurrentContext()上下文,但是当我的路径变
我正在使用绘图应用程序,我使用 CGlayers 进行绘图。触摸结束时,我从图层中获取图像并将其存储在数组中,我用它来撤消操作。 我的触摸结束功能 -(void)touchesEnded:(NSSet
我在 CgLayer 上使用 unod 重做操作,我已经尝试了一些代码,但无法让它工作,不知道,我哪里错了,下面是我写的代码 这是我的 drawRect 函数 - (void)drawRect:(CG
我创建了一个简单的绘图项目,代码工作正常,但我想将绘图缓存到 CGlayer 中,因为我读到它更有效的绘图方式。我已通读文件,但无法正确理解。所以 friend 们,我请求你们在这方面帮助我。 下面是
我一直在四处寻找答案。我仍在加快 iOS 开发的速度,所以我绝对可以接受我在这里可能很笨。然而,完全没有答案让我怀疑是否真的有答案。 事情是这样的:我正在使用 CGLayer 生成一个相当基本的矢量多
我正在使用一个绘图应用程序,我在 CGlayers 中绘图,然后在图形上下文中绘图,但我的绘图变得模糊。 这是我的代码 - (void)drawRect:(CGRect)rect { CGConte
我想在 CGLayer 上绘制一个简单的 UIImage,但找不到任何有用的资源来完成它。请告诉我如何在 CGLayer 上绘制 UIImage。 谢谢! 最佳答案 您要找的是这个吗? CGConte
意图:在屏幕外创建CGLayer,从第二个线程在其上绘制一些复杂的东西,并稍后在主线程上使用它快速绘制 问题: CGLayerCreateWithContext(context, size, info
我有 UIView 子类 - 实际上是一个拼图 - 在 initWithFrame 处初始化了 2 个不同的 CGLayer。 在drawRect中,我必须混合这两层,并且最上面应该有可变alpha,
当你像这样创建一个CGLayer,然后获取上下文时...似乎不可能释放CGContextRef? 释放 CGLayerRef 本身(显然)效果很好。 您认为可以在释放 CGLayer 之前释放 CGC
我们不断地制作一个CGLayer,进行处理,然后发布它。这种情况实时发生很多次。当然,每次制作一个全新的 CGLayer 都会有很多开销。所以... 当然,最好保留该图层,并每次删除其中的所有数据——
我有自定义的 UICollectionViewCell 子类,我在其中使用剪裁、描边和透明度进行绘制。它在模拟器和 iPhone 5 上运行良好,但在旧设备上存在明显的性能问题。 所以我想把耗时的绘图
我编写了一个 iOS 应用程序,我在其中非常成功地使用了 CGLayer。在研究从该应用程序中获得更多性能的方法时,我看到了这篇博文:http://iosptl.com/posts/cglayer-n
我正在尝试提高我们应用程序中的滚动性能。我遵循了所有普遍接受的建议(用 CG 自己绘制、单元格不透明、没有 subview 等),但当我们有后台 CPU 和网络事件时,有时它仍然会卡顿。 这里列出了一
请注意,这个问题是关于CGLayer(您通常用它来在屏幕外绘制),而不是关于CALayer。 在 iOS 中,将 CGLayer 保存为 PNG 文件的正确代码是什么?谢谢! 再说一遍,那是 CGLa
我是一名优秀的程序员,十分优秀!