2012-03-02 4 views
0

Почему doees растровое изображение не вращается посередине?вращение не в середине

Когда я вращаю точки с грехом, потому что это o.k. и вращение в Swing с AffineTransform работает, но не с вращением матрицы.

Я использую этот код:

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)); 

зеленые и красные точки правильны в красном прямоугольнику, но зеленый автомобиль Прямоугольник неправильно и не посередине.
Показать растровое изображение для неправильного вращения!

car rotation

ответ

0

Я не уверен, о синтаксисе Java, но вы должны сделать это как-то ниже.

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

Повернутое растровое изображение сделано больше, чем оригинал, чтобы не обрезать изображение. Вы можете попытаться нарисовать результат так, чтобы совпадали координаты центра.

Смежные вопросы