2011-04-26 106 views
1

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


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

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

在onTouch方法我可以event.getX()event.getY()和使用这些获得的接触点,我需要检查,如果触摸点在内部MyView的。

希望很清楚现在:)

+0

hi vilandra你可以得到x和y的坐标为'event.getX();和event.getY();'然后你可以将它与你的矩阵值进行比较 – Dinash 2011-04-26 10:15:41

+0

@Dinash:我不知道如何得到完全的矩阵值(我需要,例如,边缘) – vilandra 2011-04-26 10:22:15

+0

你的意思是显示屏的边缘 – Dinash 2011-04-26 10:26:00

回答

0
float[] values = new float[9]; 
matrix.getValues(values); 
globalX = values[2]; 
globalY = values[5]; 

这里globalx和globaly会给您的视图的X和Y坐标,然后将其与event.getX比较和event.getY值

+0

我试过它仍然以这种方式: 'code' float [] values = new float [9]; matrix.getValues(values); globalX = values [2]; globalY = values [5]; width = values [0] * baseBitmap.getWidth(); height = values [4] * baseBitmap.getHeight(); 'code' 然后,在该坐标中绘制点以查看它们在哪里: 'code' canvas.drawPoint(globalX,globalY,paint); canvas.drawPoint(globalX + width,globalY + height,paint); 'code' 但是有些观点是从一些观点中抽出来的,而不是在每个观点中都提出来的,所以我认为我不明白这个坐标是什么。 – vilandra 2011-04-26 14:09:43

+0

@vilandra你找到了解决方案吗? – Ram 2017-02-17 13:38:03

1

我用下面的代码来计算矩阵的(x4,y4)坐标。

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

由于层管理,perapse你必须使用以下梅索德检查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);