1

我正在尝试在 a 的确切点画一个圆(像点一样小)UITouch

问题是,当我从用户触摸中获取触摸点时,我必须绘制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

我认为你的方法很好。还有什么比毕达哥拉斯更优雅的呢?至于准确性,在常数上增加几位数字,您可以比用户对自己手指位置的感觉和系统计算更准确,从而为您提供触摸的质心。

更重要的是,我想不出一个好的选择。(也许一个:使用图像视图执行此操作,其中图像是一个圆圈,并设置视图的锚点,使其位于触摸的中间)。

于 2012-08-27T14:21:38.380 回答