一个简单的方法是使用画布绘制四边形.
考虑四个角落. “未触动”的矩形将是全尺寸,触摸的矩形将更小.
您只需要使用您为矩形的每个部分计算的点绘制四边形.您可以获得触摸位置,然后找出给予每个点多少“重量”.
要计算每个角落,你需要弄清楚多少“重量”给予触摸的坐标,以及多少“重量”给出未触动的坐标.如果触摸左上角,该角将使用100%的触摸坐标,而其他三个角将全部使用未触动的坐标.
如果你碰到顶部的中间,你会得到一个这样的形状:
我们可以通过计算距离您的触摸角多远的距离来计算任何触摸点的角落
float untouchedXWeight1 = Math.abs(xt - x1)/width; //maximum of 1,minimum of 0 float untouchedYWeight1 = Math.abs(yt - y1)/height; float untouchedWeight1 = (untouchedXWeight1 + untouchedYWeight1)/2; //also maximum of 1,minimum of 0 float touchedWeight1 = 1 - untouchedWeight1;
所以用这些权重,你可以计算出你的x和y位置的角落:
x1 = xUntouched1 * untouchedWeight + xTouched1 * touchedWeight1; y1 = yUntouched1 * untouchedWeight + yTouched1 * touchedWeight1;
然后对其他3个角落做同样的事情.