pCanvas.drawBitmap(mBitmap, mRectSrc, mRectDst, mPainter);
绘制位图的一个子集。我想知道如何在不影响视图的情况下旋转位图 。在我的尝试中,当我设置画布旋转 整个视图(视口)被旋转。这不是我想要的。
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);
下面是我的工作(减去扭曲的矩形): 1.将int src和dst Rects转换为s,r RectFs(float) 2. Matrix m = new Matrix(); 3. m.postRotate(...); 4. m.mapRect(r,s) 5.位图rotateBitmap = Bitmap.createBitmap(sourceBitmap,0,0,w,h,m,true); 6 ... //其他步骤 7. canvas.drawBitmap(rotatedBitmap,SrcRect,r,painter); – KITT 2011-03-11 06:31:14
其实,我不必使用保存/恢复。 – KITT 2011-03-11 06:29:57
@ user445299那么这就是如果你必须画一个位图,然后*然后*旋转整个画布。如果你需要做一些“正常”的绘制,然后绘制一个旋转的位图,你首先必须保存,旋转画布,绘制,如果它是“正常”,然后恢复。 – bigstones 2011-03-11 15:10:29