Android开发:Bitmap旋转后如何实现水平平移?
Android Matrix 实现先旋转后水平平移的Bitmap绘制
要实现先绕中心旋转45度、再水平向右平移100px的效果,核心是利用Matrix的postXXX方法在已有的旋转变换之后追加平移操作,具体步骤如下:
- 先通过
preRotate完成绕Bitmap中心的45度旋转:这个操作会将变换矩阵设置为“先执行旋转” - 再调用
postTranslate(100f, 0f)追加水平平移:post系列方法会将新变换添加到现有变换的之后,确保平移是在旋转完成后对整个旋转后的Bitmap生效
完整代码示例:
// 假设已获取到宽高500px的Bitmap对象 Bitmap targetBitmap = ...; Matrix transformMatrix = new Matrix(); // 绕Bitmap中心旋转45度 transformMatrix.preRotate(45, targetBitmap.getWidth() / 2f, targetBitmap.getHeight() / 2f); // 旋转后水平向右平移100px(x轴偏移100,y轴无偏移) transformMatrix.postTranslate(100f, 0f); // 应用矩阵绘制Bitmap canvas.drawBitmap(targetBitmap, transformMatrix, null);
需要注意的是,如果误用preTranslate(100f, 0f),会变成先平移、再旋转,最终的位置会和预期不符——因为旋转的中心还是原Bitmap的中心,平移后的Bitmap旋转后会偏离目标位置。因此必须用postTranslate来保证变换顺序正确。
内容的提问来源于stack exchange,提问作者totoaussi
相关产品推荐
相关产品推荐

