Я борюсь с растровыми вращениями. Я хочу повернуть графику вокруг альтернативной оси, но я могу только заставить ее вращаться вокруг центральной точки независимо от того, что я делаю, добавляя postTranlate. preTranslate, set Translate в любом порядке не работает. Я также попробовал postRotate (45,0,0), но он всегда вращается вокруг центра. Приведенный ниже код Интернета, что бы я сделал, чтобы изменить его точку поворота, код ниже использует значок запуска, который является квадратом. Я использую длинную тонкую графику, например стрелку.Вращение вокруг чередующейся оси
// Rotate image to 45 degrees.
public void RotateImage(){
ImageView image;
Bitmap bMap;
Matrix matrix;
//Get ImageView from layout xml file
image = (ImageView) findViewById(R.id.imageView1);
//Decode Image using Bitmap factory.
bMap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
//Create object of new Matrix.
matrix = new Matrix();
//set image rotation value to 45 degrees in matrix.
matrix.postRotate(45);
//Create bitmap with new values.
Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0,
bMap.getWidth(), bMap.getHeight(), matrix, true);
//put rotated image in ImageView.
image.setImageBitmap(bMapRotate);
}
Я попытался код ниже, но его все еще вращается вокруг центра или, по крайней мере, кажется слишком
public void RotateImage{
ImageView image;
Bitmap bMap;
Matrix matrix;
//Get ImageView from layout xml file
image = (ImageView) findViewById(R.id.imageView);
//Decode Image using Bitmap factory.
bMap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
//Create object of new Matrix.
matrix = new Matrix();
//set image rotation value to 45 degrees in matrix.
matrix.setTranslate(-100,-200);
matrix.postRotate(angle);
matrix.postTranslate(100,200);
//Create bitmap with new values.
Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0,
bMap.getWidth(), bMap.getHeight(), matrix, true);
//put rotated image in ImageView.
image.setImageBitmap(bMapRotate);
Благодарности
матрица представляется, не имеет поворот метода, который я думаю, вы могли бы означать postRotate (45, a, b), который по-прежнему вращается вокруг центра, документация показывает, что это будет работать, но моя всегда появляется в середине. Я думаю, что представление может быть повторно запущено, но просто не может его обработать. – user3129787
@ user3129787 Можете ли вы предоставить примерные значения, которые вы используете? Также разместите несколько снимков экрана для различных значений a и b. –