1

の正確な点に円(点のように小さい)を描画しようとしていUITouchます。

問題は、ユーザータッチからtouchPointを取得するときにRect、円を配置する場所を描画する必要があることです。

Rectの原点を特定し、その中に描かれた円が元のタッチポイントを中心とするように配置するために、私はピタゴラスの定理を使用しました。

ただし、このアプローチはエレガントではなく、正確ではありません。

これを行うためのより良い方法はありますか?

UITouch *touch = obj;
CGPoint touchPoint = [touch locationInView:self.view];

CGContextAddEllipseInRect(context,(CGRectMake ((touchPoint.x - 5.7), (touchPoint.y - 5.7)
                                                   , 9.0, 9.0)));
4

2 に答える 2

3

あなたは以下のようにすることができます

  CFFloat radius=10;
  UITouch *touch = obj;
  CGPoint touchPoint = [touch locationInView:self.view];

  CGContextAddEllipseInRect(context,(CGRectMake ((touchPoint.x - radius/2), (touchPoint.y 
                                              - radius/2)
                                               , radius, radius)));
于 2012-08-27T14:29:59.890 に答える
0

あなたのアプローチはいいと思います。ピタゴラスよりもエレガントなものは何ですか? 精度に関しては、定数にさらに数桁を追加すると、ユーザー自身の指の位置の感覚と、タッチの重心を与えるシステム計算の両方よりも正確になります。

さらに、良い代替案が思い浮かびません。(たぶん 1 つ: 画像が円である画像ビューでこれを行い、タッチの中央に位置するようにビューのアンカー ポイントを設定します)。

于 2012-08-27T14:21:38.380 に答える