我正在尝试制作一个重新调整大小的触摸视图,这是我成功完成的。您可以找到代码How to make view resizable on touch event。
它有4个角。您可以通过拖动一个角来重新调整该矩形的大小。但现在我想增强那个逻辑,并希望在该代码中放置旋转。当用户触摸矩形边缘之一的中心时,我成功找到了角度。但现在问题是我无法获得角落的新位置,以便我可以重绘该矩形并且可以旋转。
问题是:如何根据角度计算4个角落的新位置?。
答案 0 :(得分:0)
如果您知道旋转的角度,则无需计算矩形的顶点。 一个简单的方法如下
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
canvas.rotate(60.0f);
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.STROKE);
canvas.drawRect(10, 10, 100, 100, paint);
canvas.restore();
}
答案 1 :(得分:0)
据我了解,您想根据旋转角度计算新坐标......它可能比您想象的更简单:
x' = x × (cosα - sinα)
y' = y × sinα × cosα
因此,您只需以编程方式应用此选项,考虑x'
的轮换结果x
与y'
和y
以及α
相同的结果是旋转角度。
cosα
和sinα
函数在Java中可用作Math.cos(α)
和Math.sin(α)
,但注意:在Java中,所有三角函数都使用弧度而非度数作为角度,因此你可以考虑这个:
rad = deg * 180 / π
适用于:
double deg = 45d; //Put instead your degrees
double rad = deg / 180 * Math.PI; //The radians convertion