我在画布上绘制了许多形状。一个这样的形状是位图。假设画布上位图的中心位于中心xCenter, yCenter
,以便绘制我调用
xLeft = xCenter+mBitmap.getWidth()/2;
yTop = yCenter+mBitmap.getHeight()/2;
canvas.drawBitmap(mBitmap, x,y, mFilledPaint);
到目前为止一切正常。下一步是围绕中心xCenter, yCenter
旋转位图。我的代码不是这样做的。它将位图移动到整个地方,而我想要的只是让图像围绕自己的中心旋转。我该如何修复下面的代码?我已经查看了Android: How to rotate a bitmap on a center point,我最多也不了解那里的回复。
我的代码
xLeft = xCenter+mBitmap.getWidth()/2;
yTop = yCenter+mBitmap.getHeight()/2;
matrix.postRotate(30f, xLeft, yTop);
canvas.drawBitmap(mBitmap, matrix, mFilledPaint);
也用0替换xLeft和yTop似乎不起作用..任何想法??
修改
xCenter, yCenter
不是画布的中心。这只是位图中心落地的地方。
答案 0 :(得分:1)
我想你的意思是,你无法理解以下代码:
this.matrix.reset();
this.matrix.setTranslate(this.floatXpos, this.floatYpos);
this.matrix.postRotate((float)this.direction, this.getCenterX(), this.getCenterY());
我想我可以给出一些解释,因为我之前在我的项目中完成了这项任务:
要理解这一点,你需要知道如何使用矩阵。基本上,你的位图(位图中的点实际上是一个矩阵)乘以你在这里创建的矩阵,然后它得到一个新的矩阵,画布只是绘制新的基质