2011-03-06 44 views
0

我使用如何在绘制其子集时旋转位图?

pCanvas.drawBitmap(mBitmap, mRectSrc, mRectDst, mPainter); 

绘制位图的一个子集。我想知道如何在不影响视图的情况下旋转位图 。在我的尝试中,当我设置画布旋转 整个视图(视口)被旋转。这不是我想要的。

回答

1

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

+0

其实,我不必使用保存/恢复。 – KITT 2011-03-11 06:29:57

+0

@ user445299那么这就是如果你必须画一个位图,然后*然后*旋转整个画布。如果你需要做一些“正常”的绘制,然后绘制一个旋转的位图,你首先必须保存,旋转画布,绘制,如果它是“正常”,然后恢复。 – bigstones 2011-03-11 15:10:29

0

我知道的唯一方法是使用矩阵。试试这个伪代码:

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); 
+0

下面是我的工作(减去扭曲的矩形): 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

相关问题