我有一些图像,我希望在我的UIControl中绘制它。但是为了提高性能,我需要在图形上下文中绘制。
现在我可以使用类似的东西:
var imageRect1 = CGRectMake(0, 0, width, height)
var imageRect2 = CGRectMake(x2, y2, width, height)
...
CGContextDrawImage(ctx, imageRect1, image)
CGContextDrawImage(ctx, imageRect2, image)
...
但是这个解决方案意味着每次调用该上下文函数时我们至少会读取image
。
我搜索一些可以用于某些步骤的解决方案,比如下一个(如果我错了,请随时纠正我):
//read image into some bitmap or maybe some byte array
//paste it several times in different places (several times means ~500 times)
也许我必须逐像素复制?有人可以给我一些如何快速做的建议吗?
答案 0 :(得分:0)
如果您要在CALayer中绘制单个图像,则最常见的解决方案是将图像设置为支持CALayer 的内容属性,如{ {3}}
self.imageLayer.contents = (id)image.CGImage
如果,您的问题是使用CGImageRef
和CGContextRef
进行缓存,则您的问题已在此处得到解答:
如果您直接在UIView
中绘图,请参阅@boeqqsh评论:
let image = UIImage.imageNamed("image")
let imageRect1 = CGRectMake(0, 0, width, height)
let imageRect2 = CGRectMake(x2, y2, width, height)
image.drawInRect(imageRect1)
image.drawInRect(imageRect2)