我有一个存储在RGBA缓冲区中的图像。现在我想在UIView的drawRect方法中绘制这些数据:
- (void)drawRect:(CGRect)rect
{
// draw RGBA here
}
一种方法是将数据复制到UIImage(drawRect方法之外)并绘制此UIImage。有没有一种方法可以直接绘制数据而无需在UIImage中制作另一个副本?
此致
答案 0 :(得分:2)
为此目的使用UIView的drawrect函数会非常慢。每当你为视图设置动画时,移动它,在它上面移动其他东西或者重绘它的任何东西(慢速过程)。 UIImageView针对此任务进行了优化,使用它是有益的。
但是如果你已经设置了drawrect那么你必须通过将UIView的宽度和高度除以图像的宽度和高度(以像素为单位)来创建“像素”矩形。然后遍历每个像素行和列,并使用CGContextSetFillColor
和CGContextFillRect
。将颜色数组分类为相似的颜色并一次绘制相同的颜色可能会提高性能。但仍比UIImageView慢得多。拥有你的数组和UIImageView的内存重叠并不足以超过好人。