在两个方向上执行Matrix.mapPoints()

时间:2015-07-05 20:49:37

标签: android matrix

在文字游戏中,我使用Matrix来定义代表游戏板的图像的滚动偏移和缩放:

app screenshot

当我在游戏板上玩字母拼贴时,我会通过以下方法将屏幕坐标(onTouchEvent中的手指触摸坐标)转换为游戏板坐标(知道放置图块的位置): / p>

public PointF screenToBoard(PointF screenPoint) {
    float[] point = new float[] {screenPoint.x, screenPoint.y};
    Matrix inverse = new Matrix();
    mMatrix.invert(inverse);
    inverse.mapPoints(point);
    float boardX = point[0];
    float boardY = point[1];
    return new PointF(boardX, boardY);
}

我的问题是:如何进行相反的转换?

即。当我将字母拼贴从游戏板移动到屏幕底部的蓝色条(例如取消轮到我的时候)时 - 我怎样才能从游戏板坐标转换回屏幕坐标?

mapPoints方法上的Android文档非常稀缺。

1 个答案:

答案 0 :(得分:0)

好的,找到了解决方案:

public PointF boardToScreen(PointF boardPoint) {
    float[] point = new float[] {boardPoint.x, boardPoint.y};
    mMatrix.mapPoints(point);
    float screenX = point[0];
    float screenY = point[1];
    return new PointF(screenX, screenY);
}