【问题标题】:Point in Matrix coordinates矩阵坐标中的点
【发布时间】:2011-04-26 10:10:37
【问题描述】:

是否可以检查一个点是否包含在矩阵坐标中?我有用于绘制视图的原始矩阵,并想知道 onTouch 事件坐标是否包含在其坐标中。 谢谢


好的,我应该解释得更好。 我有一个自定义视图 MyView。在它的构造函数中,我通过矩阵来绘制视图。 onDraw 方法是:

@Override   
protected void onDraw(Canvas canvas) {  
         super.onDraw(canvas);
         canvas.drawBitmap(this.baseBitmap, this.matrix, null); 
}

在 onTouch 方法中,我可以使用 event.getX()event.getY() 获取触摸点,使用它们,我需要检查触摸点是否在 MyView 内。

希望现在很清楚:)

【问题讨论】:

  • 嗨 vilandra,您可以将 x 和 y 坐标设为event.getX(); and event.getY();,然后您可以将其与您的矩阵值进行比较
  • @Dinash:我不知道如何准确获取矩阵值(例如,我需要边)
  • 你的意思是显示屏的边缘
  • 那很好 vilandra 你把那个视图放在哪里了......你把它放在矩阵中提到的位置......你能访问矩阵的值吗......跨度>

标签: android events view matrix touch-event


【解决方案1】:

我使用下面的代码计算了一个矩阵的 (x4,y4) 坐标。

float[] matrixValues = new float[9];
matrix.getValues(matrixValues);
view.getDrawable().getIntrinsicHeight() * matrixValues [0]; 
view.getDrawable().getIntrinsicWeight() * matrixValues [0];

由于图层管理,你必须使用以下方法检查 ImageView 坐标:

yourImageView.getTop()
yourImageView.getBottom()
yourImageView.getRight()
yourImageView.getLeft()

例如

float[] m = new float[9];
matrix.getValues(m);
int layoutHeight = view.getBottom() - view.getTop();
float maxMatrixBottomPosition = - ((view.getDrawable().getIntrinsicHeight() * m[0]) - layoutHeight);

【讨论】:

    【解决方案2】:
    float[] values = new float[9];
    matrix.getValues(values);
    globalX = values[2];
    globalY = values[5];
    

    这里 globalx 和 globaly 将给出视图的 x 和 y 坐标,然后将其与 event.getX 和 event.getY 值进行比较

    【讨论】:

    • 我用这种方式试过了:codefloat[] values = new float[9];矩阵.getValues(值); globalX = 值[2]; globalY = 值[5];宽度 = 值[0]*baseBitmap.getWidth();高度 = 值[4]*baseBitmap.getHeight(); code 然后,在该坐标中绘制点以查看它们的位置:code canvas.drawPoint(globalX, globalY, paint); canvas.drawPoint(globalX+width, globalY+height, paint); code 但是点是从某些视图中得出的,而不是在每个视图中,所以我以为我不明白那个坐标是什么。
    • @vilandra 你找到解决方案了吗?
    猜你喜欢
    • 2012-06-13
    • 2014-08-17
    • 2019-07-13
    • 2021-04-09
    • 2013-06-20
    • 2012-02-07
    • 2018-05-18
    • 2017-02-20
    • 2018-11-21
    相关资源
    最近更新 更多