1

画像にテキストが描画された UIimage があります。画像上のテキスト長方形の正確な座標を知っています。画像のパン イベントが発生すると、テキストがある画像内の四角形をクリックしてパンが開始されているかどうかを確認します。

If (長方形をクリックしてパンを開始) then

パン移動座標を取得し、長方形を移動します。したがって、私が実際に行っているのは、新しい座標を取得し、新しい位置にある四角形で画像を再描画することです。これにより、長方形のパン効果が得られます(他の理由で、ラベルを使用できず、再描画する必要があります)。

これは完全に機能しますが、パンニングが「速すぎる」場合は弾性効果があり、長方形が遅れます。理論的には、イメージ全体を再描画する必要はなく、古い長方形と新しい長方形の交点だけを再描画する必要があります。これで確実にスムーズになると思います。

質問: 速くする方法。//再描画するコード

 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)];

画像全体を再描画することは非論理的です。古い画像を取得し、画像の一部を再描画してView Controllerに割り当てたいと思います。助言がありますか?

どうもありがとう、プラサド。

4

0 に答える 0