1
히트 테스트를 수행하려고하는 비트 맵 이미지가 있습니다. 히트 테스트는 정상적인 비트 맵 일 경우에만 작동합니다. 하지만 비트 맵을 회전하고 크기를 조정해야하며 히트 테스트를 제대로 파악하지 못하는 것 같습니다.행렬 조작 사각형에 대한 히트 테스트
여기서 x와 y는 커서 x와 y입니다. 조작 된 비트 맵에서 커서 (손가락 누름)가 클릭되었는지 확인해야합니다. 척도가 잘 작동하는 것처럼 보이지만 회전이 영향을 미치지 않는 것 같습니다.
float[] pts = new float[4];
float left = m.getX();
float top = m.getY();
float right = left + mBitmaps.get(i).getWidth();
float bottom = top + mBitmaps.get(i).getHeight();
pts[0] = left;
pts[1] = top;
pts[2] = right;
pts[3] = bottom;
float midx = left + mBitmaps.get(i).getWidth()/2;
float midy = top + mBitmaps.get(i).getHeight()/2;
Matrix matrix = new Matrix();
matrix.setRotate(m.getRotation(), midx, midy);
matrix.setScale(m.getSize(), m.getSize(), midx, midy);
matrix.mapPoints(pts);
if(x >= pts[0] && x <= pts[2] && y >= pts[1] && y <= pts[3])
{
return i;
}
난 테스트해야한다고 생각 (PTS [0]> = 0 && PTS [0] = 0 && PTS [1]
yoah
@yoah 나는 그렇게 생각하지 않는다. 매트릭스에 번역이 없다. – Henry
@Henry 제안을 사용하면 커서가 비트 맵이 변형되지 않은 것처럼 동작합니다. 90도 회전하면 의미있는 부분은 반영되지 않습니다. 비트 맵이 회전되지 않은 것처럼 여전히 그. – lostdev