使用其线触摸事件调整大小和旋转矩形

时间:2017-11-24 20:22:03

标签: android canvas image-resizing touch-event scaletransform

在手指触摸事件上移动矩形,并通过向左,向右,向上或向下移动手指触摸来调整矩形,并在我触摸或在矩形的右下角移动(图中所示)时将其旋转并重绘( canvas)android如果有人可以帮忙。

enter image description here

1 个答案:

答案 0 :(得分:0)

如果您拥有来自View的所有儿童课程,则可以覆盖

@Override
public boolean onTouchEvent(MotionEvent event) {
    final Point point = new Point((int) event.getX(), (int) event.getY());
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            press(point);
            break;
        case MotionEvent.ACTION_MOVE:
            drag(point);
            break;
        case MotionEvent.ACTION_UP:
            release(point);
            break;
    }
    return true;
}

在方法press(Point point)中,您需要使用point to pointpoint to line距离来确定哪个要素最接近被选中。方法drag(Point point)可以帮助您拖动矩形。

<强>图纸

绘图应该在onDraw(Canvas canvas)方法中进行,但实例化应该在此方法之外。因此,您在构造函数中创建Rect

Rect rect = new rect(10, 10, 100, 100)

<强>调整大小

当您尝试调整大小时,您不需要创建一个新的Rect,您只需使用

rect.set(x, y, dx, dy)

<强>旋转

当您想要旋转时,需要旋转Canvas然后绘制,然后再旋转以绘制其他内容。

canvas.save();
canvas.rotate(45);
canvas.drawRect(rect, paint);
canvas.restore();