Точка в матричных координатах - PullRequest
1 голос
/ 26 апреля 2011

Можно ли проверить, содержится ли точка в координатах матрицы? У меня есть исходная матрица, используемая для рисования вида, и я хочу знать, включены ли координаты события 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.

Надеюсь, теперь все ясно:)

Ответы [ 2 ]

1 голос
/ 23 мая 2011

Я использовал следующий код для вычисления (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);
0 голосов
/ 26 апреля 2011
float[] values = new float[9];
matrix.getValues(values);
globalX = values[2];
globalY = values[5];

здесь globalx и globaly дадут координаты x и y вашего представления, а затем сравнят их со значениями event.getX и event.getY

...