У меня есть растровое изображение, и я хочу создать новое растровое изображение, полученное первым, повернутым вокруг его центра. На самом деле я использую этот код, но он не работает.Как повернуть растровое изображение вокруг центральной точки с помощью холста?
Bitmap source = ((BitmapDrawable)r.getDrawable(R.drawable.rectangle)).getBitmap();
int targetWidth = (int)(mWidth * Math.sin(rotationAngle) + mHeight * Math.cos(rotationAngle));
int targetHeight = (int)(mWidth * Math.cos(rotationAngle) + mHeight * Math.sin(rotationAngle));
Bitmap target = Bitmap.createBitmap(targetWidth, targetHeight, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(target);
Matrix m = new Matrix();
m.setRotate(rotationAngle, targetWidth/2f, targetHeight/2f);
c.drawBitmap(source, m, null);
Я также пробовал этот код, но это не помогает.
Bitmap source = ((BitmapDrawable)r.getDrawable(R.drawable.rectangle)).getBitmap();
int targetWidth = (int)(mWidth * Math.sin(rotationAngle) + mHeight * Math.cos(rotationAngle));
int targetHeight = (int)(mWidth * Math.cos(rotationAngle) + mHeight * Math.sin(rotationAngle));
Bitmap target = Bitmap.createBitmap(targetWidth, targetHeight, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(target);
c.rotate(rotationAngle, targetWidth/2f, targetHeight/2f);
c.drawBitmap(temp, 0, 0, null);
В этом случае поворот команды (но то же самое происходит с помощью команды масштаба) называется на холсте полностью игнорируется для любого параметра. Я также пытался использовать:
c.drawColor(Color.BLACK)
вместо
c.drawBitmap(temp, 0, 0, null);
рисовать все полотно, и это подтверждает, что команды игнорируются.
К сожалению, не :(Я уже пробовал, но это, кажется, холст полностью игнорировать команду поворота – VanDir
@VanDir Это должно работать. , вы вращаете холст ** перед ** вы рисуете растровое изображение? Можете ли вы опубликовать обновленный код? – Day
Я отредактировал вопрос ... спасибо за вашу помощь – VanDir