2013-05-20 2 views
1

캔버스를 사용하여 60도 회전시 캔버스를 사용하여 여러 이미지 (120X120) 을 그립니다. 이미지가 회전 할 때 화면의 아무 곳에 나있을 수 있습니다. 나는 그 중심을 원할뿐입니다. 이 작업을 수행하는 방법?행렬을 사용하여 회전 할 때 이미지의 위치가 없어집니다.

Matrix matrix = new Matrix(); 
matrix.postRotate(60); 
Bitmap map= Bitmap.createBitmap(resizedBitmap, 0, 0,resizedBitmap.getWidth(), resizedBitmap.getHeight(),matrix, true); 

답변

1

내 질문에 대한 해결책을 찾았습니다.

트릭은 당신이 이러한 속성 변경, 너무

따라서 회전 된 이미지 변화의 위치, 우리는 비트 맵을 그릴, 알고 그래서 때를 그릴 때 높이와 이미지의 폭을 사용하는 것입니다 좌상 구석의 좌표를 건네줍니다. 그러나 올바른 방법은 중심의 좌표에서 이미지의 높이/너비를 뺀 값으로 이미지 높이와 너비가 변하면 중심을 유지하는 것입니다.

canvas.drawBitmap(map, x - map.getWidth()/2,y - map.getHeight()/2, null); 

x와 y는 이미지의 중심 좌표는

내 이미지의 중심을 의미하는 120X120dp 내가 400,300 에서 내 이미지를 그리려는 현재의 상황 이미지 크기를 가정 어디 것이다 내가 지금이

canvas.drawBitmap(map, 460 - map.getWidth()/2,360 - map.getHeight()/2, null); 

을해야, 460,360 그래서에있을이 코드에서 항상 내 이미지의 중심을 유지하기 위해 내 이미지가 회전 할 때, 그 센터는 것입니다 높이와 너비가 바뀌었기 때문에 똑같이있어 라. 그리고 나는 그들을 중심을 계산하는 데 사용하고있다.

내가 해결책을 찾고있을 때 많은 사람들이 묻는 것을 발견했기 때문에이 지식을 공유 할 생각 이었지만 분명히 좋은 대답은 없었습니다. 해피 프로그래밍마다

관련 문제