вращение не посередине - PullRequest
       8

вращение не посередине

0 голосов
/ 02 марта 2012

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

Когда я поворачиваю точки с грехом, потому что это нормально. и вращение в 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

Ответы [ 2 ]

0 голосов
/ 02 марта 2012

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

0 голосов
/ 02 марта 2012

Я не уверен в синтаксисе 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);
...