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