我有一个 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)];
重新绘制整个图像是不合逻辑的。我想拍摄一张旧图像,然后重新绘制图像的一部分并将其分配给视图控制器。有什么建议么?
非常感谢,普拉萨德。