2014-05-09 49 views
0

我写了一个自定义视图,它在屏幕的中心显示文本,如下所示。 enter image description here旋转的Android画布会导致myRect.contains(X,Y)不起作用

我也做到了这一点,如果你触摸绿色框,你可以旋转和缩放文本,如下所示。 enter image description here

继承人的问题。 每当我旋转文本并放手,然后尝试再次旋转它不能检测到使用myRect.contains(X,Y)触摸矩形。 经过一段时间后,我发现旋转后,触摸原始绿色框的位置,它允许我再次旋转。

OnTouchEvent显然是在绘制正确的位置后正确计算Rects位置。我只能弄清楚为什么触摸坐标看起来像是在引用旧的位置。

这是我的onDraw()方法。

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    canvas.save(); 
    canvas.rotate((float)mAngle, mBorderRect.centerX(), mBorderRect.centerY()); 
    canvas.drawRect(mBorderRect, mTextBorderPaint); 
    canvas.drawText(mText, mBorderRect.left, mBorderRect.bottom, mTextPaint); 
    canvas.drawRect(mResizeRect, mBGPaint); 
    canvas.restore(); 

} 
+0

嗨,你可以发布解决方案的例子吗?目前我的问题与您的相同,但我不太清楚如何首先在触摸位置上反转。感谢 – Ricky

回答

1

请记住,您正在旋转画布,而不是Rect。为了实现这个功能,您必须首先在触摸位置上应用反转,然后计算myRect.contains(X,Y)。

+0

这是其中的一个“Duh!”时刻对我来说,谢谢。那工作。 –

+0

如果你不介意,可以帮我解决这个问题吗? http://stackoverflow.com/questions/23801019/rotating-one-of-the-canvas-causes-rect-containsx-y-not-to-work 感谢 – Ricky

+0

@Ricky我从来没有发现一个完美的解决方案我的问题。我问了另一个问题(下面的链接)。在评论中,一个人提出了一些不适合我的工作,因为我正在做一些非常具体的事情,但它可以为你工作http://stackoverflow.com/questions/23689111/finding-a-point-after-android-帆布旋转#评论36406211_23689111 –