1

我有一个 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)];

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

非常感谢,普拉萨德。

4

0 回答 0