android:Canvas绘制自旋转Bitmap

需求 在SurfaceView或者普通View中,我们在每个绘制周期(onDraw)中,不仅需要更新绘制Bitmap对象在View中得位置,,而且还希望Bitmap能够以它自身的中心点为圆心,进行自旋转。解决 使用Canvas的drawBitmap(Bitmap bitmap,Matrix matrix,Paint paint)方法,最重要的就是定制Matrix。 代码如下:/*** 绘制自旋转位图** @param canvas* @param paint* @param bitmap*位图对象* @param rotation*旋转度数* @param posX*在canvas的位置坐标* @param posY*/(Canvas canvas, Paint paint, Bitmap bitmap,float rotation, float posX, float posY) {Matrix matrix = new Matrix();int offsetX = bitmap.getWidth() / 2;int offsetY = bitmap.getHeight() / 2;matrix.postTranslate(-offsetX, -offsetY);matrix.postRotate(rotation);matrix.postTranslate(posX + offsetX, posY + offsetY);canvas.drawBitmap(bitmap, matrix, paint);}

首先,我们将bitmap向左上角移动一半(xy各一半),然后旋转需要的度数。最后再将center移动回来。然后再移动到位置坐标(posX,posY)上。注意,坐标(posX,posY)是位图的左上角的点。

另外,为了使旋转连贯,调用该方法时:

rotation += 0.1f * (new Random().nextInt(20));drawRotateBitmap(canvas, paint, bitmap, rotation, posX, posY);更多交流

Android开发联盟QQ群:272209595

每一发奋努力的背后,必有加倍的赏赐。

android:Canvas绘制自旋转Bitmap

相关文章:

你感兴趣的文章:

标签云: