Android 绘制位图子集时如何旋转位图?

Android 绘制位图子集时如何旋转位图?,android,bitmap,rotation,drawbitmap,Android,Bitmap,Rotation,Drawbitmap,我正在使用 pCanvas.drawBitmap(mBitmap, mRectSrc, mRectDst, mPainter); 绘制位图的子集。我想知道如何旋转位图 不影响视野。在我的尝试中,当我将画布设置为旋转时 整个视图(视口)将旋转。这不是我想要的。当我必须绘制旋转文本时,我发现过程是调用Canvas.save(),旋转(记住中心点保持不变),绘制,然后调用Canvas.restore()。我想在这种情况下也是一样的。我知道的唯一方法就是使用矩阵。请尝试以下伪代码: Bitmap bm

我正在使用

pCanvas.drawBitmap(mBitmap, mRectSrc, mRectDst, mPainter);
绘制位图的子集。我想知道如何旋转位图 不影响视野。在我的尝试中,当我将画布设置为旋转时
整个视图(视口)将旋转。这不是我想要的。

当我必须绘制旋转文本时,我发现过程是调用
Canvas.save()
,旋转(记住中心点保持不变),绘制,然后调用
Canvas.restore()
。我想在这种情况下也是一样的。

我知道的唯一方法就是使用矩阵。请尝试以下伪代码:

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.your_bitmap);
Matrix matrix = new Matrix();
matrix.postRotate(90);
Bitmap rotatedBMP = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true);

实际上,我不必使用“保存/还原”。@user445299这就是如果你必须绘制位图,然后旋转整个画布。如果你需要做一些“正常”的绘制,然后绘制一个旋转的位图,你首先必须保存,旋转画布,像“正常”一样绘制,然后恢复。将int-src和dst-Rects转换为s,r-RectFs(float)2。矩阵m=新矩阵();3.m、 旋转后(…);4.m、 mapRect(r,s)5。位图旋转位图=位图.createBitmap(sourceBitmap,0,0,w,h,m,true);6…//其他步骤7。画布.drawBitmap(旋转位图、srrect、r、painter);