2012-03-02 5 views
0

왜 비트 맵이 중간에 회전하지 않습니까?회전이 중간에 없음

sin을 사용하여 포인트를 회전시킬 때 o.k가됩니다. AffineTransform에 의한 Swing의 회전은 행렬의 회전에는 영향을주지 않습니다.

matrix.reset();  
    matrix.setRotate(35.0f,middleofx,middleofy);  
    Bitmap t=Bitmap.createBitmap(BI_auto);  
    Bitmap rotatedBitmap = Bitmap.createBitmap(t, 0, 0, 
    BI_car.getWidth(), BI_car.getHeight(), matrix, true);` 

지점의 회전 작동 :

sx = ((carx) + 45 - worldx); 
sy = ((cary) + 45 - worldy);  
float rad = (float) (grad/180.0 * Math.PI); 
float ex2 = (float) (sx + length* Math.sin(angle - rad)); 
float ey2 = (float) (sy + length* Math.cos(angle - rad)); 

녹색과 붉은 점은 빨간색 RECT에서 정확하지만, 그린 카 RECT가 잘못하고

나는이 코드를 사용 중간에 있지 않아.
잘못된 회전 비트 맵을 표시하십시오!

car rotation

답변

0

나는 자바 구문에 대한 모르겠지만 아래 무엇인가를해야한다.

matrix.translate(-middleofx,-middleofy); // these might be positive. 
matrix.setRotate(35.0f); 
Bitmap t=Bitmap.createBitmap(BI_auto); 
Bitmap rotatedBitmap = Bitmap.createBitmap(t, 0, 0, BI_car.getWidth(), BI_car.getHeight(), matrix, true); 
matrix.translate(0,0); 
0

이미지를 자르지 않기 위해 회전 된 비트 맵이 원래보다 커졌습니다. 센터의 좌표가 일치하도록 결과를 그릴 수 있습니다.

관련 문제