【问题标题】:Rotate an image around center围绕中心旋转图像
【发布时间】:2011-12-02 04:35:31
【问题描述】:

如何围绕中心点旋转图像?这会旋转它但也会移动它:

 Matrix mat = new Matrix();
 mat.postRotate(45);
 Bitmap bMapRotate = Bitmap.createBitmap(dialBM, 0, 0, dialBM.getWidth(),dialBM.getHeight(), mat, true);
dial.setImageBitmap(bMapRotate);

我查看了本网站上的其他示例,但它们要么无法工作,要么无法使用画布,我不想使用画布。

【问题讨论】:

    标签: android


    【解决方案1】:

    postRotate 的第二个和第三个参数是 x 和 y 轴心点。

     mat.postRotate(45, dialBM.getWidth()/2, dialBM.getHeight()/2);
    

    【讨论】:

    • 哦,这确实更简单,虽然我猜它在内部按照我的建议做了。
    • 这不起作用。我的表盘会旋转,但不会绕着它的中心旋转。
    • 将第二个和第三个参数更改为您希望它旋转的位置。 (postRotate(degrees, pivotX, pivotY))
    • 我做到了,我希望它围绕表盘中心旋转,如果我错了,我会纠正宽度和高度除以 2 吗?
    • 是的,图像的中心是 height/2 和 width/2。我建议在编辑器中打开图像并找到您希望它旋转的确切位置。
    【解决方案2】:

    可能是因为您的矩阵围绕 (0,0) 旋转,而不是位图的中间。您应该声明两个额外的矩阵 - 一个用于将位图的中心移动到 (0,0)(移位 -getWidth()/2, -getHeight(2)),另一个用于将位图的中心移回 (0,0)。将三个矩阵相乘,然后得到结果。

    【讨论】:

      猜你喜欢
      • 2014-05-19
      • 2011-07-08
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      相关资源
      最近更新 更多