UIImage重绘效率

时间:2012-10-02 13:28:08

标签: objective-c ios cocoa-touch

我有一个UIimage,在图像上绘制了一些文字。我知道图像上文本矩形的确切坐标。当触发图像平移事件时,我检查平移是否开始时单击图像中有文本的矩形。

如果(从矩形点击开始平移)则

我得到平移坐标并移动矩形。所以我实际做的是获取新坐标并使用新位置的矩形重绘图像。这给出了矩形的平移效果(出于其他原因,我不能使用标签,但必须重绘)。

这完美无缺,除非如果平移“太快”,则会产生弹性效果并且矩形类型落后。从理论上讲,我不需要重绘整个图像,而只需要重新绘制旧矩形和新矩形的交集。我认为这肯定会使它更顺畅。

问题:如何加快速度。 //我重绘的代码

 UIGraphicsBeginImageContext(img.size);
  [img drawInRect: CGRectMake(0,0, img.size.width, img.size.height)];
  CGContextRef context = UIGraphicsGetCurrentContext();

  CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0);
  CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 0.2);
  CGContextFillRect(context, CGRectMake(myRect.origin.x, myRect.origin.y, myRect.size.width, myRect.size.height));

   UIImage *theImage=UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();    
   CurrentImageView.Image = theImage;

我个人认为这里最耗时的步骤是

[img drawInRect: CGRectMake(0,0, img.size.width, img.size.height)];

重绘整个图像是不合逻辑的。我想拍摄旧图像,只是重绘图像的一部分并将其分配给视图控制器。有什么建议吗?

提前多多感谢, 普拉萨德。

0 个答案:

没有答案