国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > 综合技术 > android:Canvas绘制自旋转Bitmap

android:Canvas绘制自旋转Bitmap

来源:程序员人生   发布时间:2015-04-01 08:24:05 阅读次数:5180次
  • 需求
    在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

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生