叠加图像

时间:2009-11-04 21:54:44

标签: iphone core-graphics quartz-graphics

我正在创建一个应用程序,我将在屏幕上绘制两个圆圈,一个圆圈内部有一个较小的圆圈。我希望用户能够在大圆圈内部或外部的屏幕上触摸/拖动,它将在该方向上移动较小的圆圈。如果用户触摸大圆圈之外,较小的圆圈将不会超出较大圆圈的边界。

通过我所做的研究,我可以轻松地将两个圆圈相互绘制在一起并处理较小图像的移动。但是,我没有看到一种简单的方法来限制较小的圆圈留在较大的圆圈内。我所发现的只是削波,但这只会导致较小的圆圈被部分绘制。有没有人有一个很好的参考点我可以用来开始研究这是如何可能的?谢谢。

2 个答案:

答案 0 :(得分:1)

我认为你最好的选择是自己做数学并限制较小的圆圈运动。使用裁剪不会限制圆圈进入较大圆圈边界的“外部”,当它超出有效边界时,它只会部分绘制较小的圆圈。

您必须检查较小圆圈的中心是否位于假想圆圈内,该圆圈与较大圆圈的中心相同但是具有(diameterLargeCircle - diameterSmallCircle)的直径

答案 1 :(得分:0)

让我们说大圈有Radio Rb和Center Cb。内圈为Ri和中心Ci 如果你设置从Ci到Cb的距离(从内圈中心到大圈的中心)小于Rb-Ri(比内圈的其余大部分)你将永远有内在的圈内...你明白了吗?只需绘制它并看到它始终是真的)距离(Ci到Cb)< RB-RI 你需要做的唯一事情是检查这是真的。

从Ci到Cb的距离是Math.Sqrt(math.Pow(Cix-Cbx,2)+ Math.Pow(Ciy-Cby,2))