我想根据用户点击将位图图像旋转10度。在查看了许多stackoverflow和Google答案后,我尝试了各种矩阵旋转组合。
然而,图像并没有按预期旋转,并且在画布中心周围产生了抖动的旋转视图+振荡。为了测试,每次调用对象的绘制方法时,我增加10度的旋转角度(而不是点击)。图像是一个对称的圆形[64x64包围矩形],我希望它像车轮一样围绕自己的中心在屏幕中心旋转,但它会对角线向右下方旋转并以振荡方式向屏幕中心移动。
然而,图像并没有按预期旋转,并且在画布中心周围产生了抖动的旋转视图+振荡。为了测试,每次调用对象的绘制方法时,我增加10度的旋转角度(而不是点击)。图像是一个对称的圆形[64x64包围矩形],我希望它像车轮一样围绕自己的中心在屏幕中心旋转,但它会对角线向右下方旋转并以振荡方式向屏幕中心移动。
public void draw(Canvas canvas) {
Matrix matrix = new Matrix();
rotation += 10;
float px = this.viewWidth/2;
float py = this.viewHeight/2;
matrix.setRotate(rotation, bitmap.getWidth()/2, bitmap.getHeight()/2);
Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, getImgWidth(), getImgHeight(), matrix, true);
canvas.drawBitmap(newbmp, px - (getImgWidth()/2), py - (getImgHeight()/2), null);
}
matrix.setRotate(rotation, bitmap.getWidth()/2, bitmap.getHeight()/2);
替换了前两个 post* 方法。 - Anshulmatrix.postTranslate(px, py, centerx, centery)
。 - Ionoclast Brigham