2011-04-26 107 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);