程序员人生 网站导航

android:Canvas绘制自旋转Bitmap

栏目:综合技术时间:2015-04-01 08:24:05
  • 需求
    在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 */ private void drawRotateBitmap(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向左上角移动1半(xy各1半),然后旋转需要的度数。最后再将center移动回来。然后再移动到位置坐标(posX,posY)上。注意,坐标(posX,posY)是位图的左上角的点。

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

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

Android开发同盟QQ群:272209595

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐