iOS:在drawRect中绘制RGBA数据,而无需事先转换为UIImage



我有一个图像存储在RGBA缓冲区中。现在我想在UIView的drawRect方法中绘制此数据:

- (void)drawRect:(CGRect)rect
{
// draw RGBA here
}

一种方法是将数据复制到 UIImage(在 drawRect 方法之外)并绘制此 UIImage。有没有一种方法可以直接绘制数据,而无需在 UIImage 中制作另一个副本?

问候

为此目的使用 UIView 的 drawrect 函数会非常慢。 任何时候你对视图进行动画处理,移动它,在它上面移动其他东西或任何必须重新绘制的东西(缓慢的过程)。 UIImageView针对此任务进行了优化,使用它将是有益的。

但是,如果您死板地使用drawrect,那么则必须通过将UIView的宽度和高度除以图像的宽度和高度(以像素为单位)来创建"像素"矩形。 然后遍历每个像素行和列,并使用CGContextSetFillColorCGContextFillRect。 将颜色数组分类为相似的颜色并一次绘制相同的颜色可能是有意义的。 但仍然比UIImageView慢得多。 拥有数组和 UIImageView 的内存重叠还不足以超过好处。

最新更新