【问题标题】:How to find center position of a bitmap that rotated and scaled with a matrix?如何找到用矩阵旋转和缩放的位图的中心位置?
【发布时间】:2015-04-23 14:54:17
【问题描述】:

我想用矩阵计算在画布上绘制的位图的中心,它可以用任意值旋转、缩放或平移。在画布上找到此位图中心的最简单方法是什么?

【问题讨论】:

    标签: android math matrix


    【解决方案1】:

    您需要将矩阵应用于位图中心的坐标。

    如果使用带有变换矩阵的画布,可以通过Canvas.getMatrix()得到最终的矩阵

    如果您使用矩阵在画布上绘制位图:drawBitmap(bitmap, matrix, paint),那么您需要使用该矩阵,或者将其连接到画布的矩阵(如果有的话)。

    然后您最终可以使用Matrix.mapPoints 将该矩阵应用到矩阵的中心。

    类似:

    canvas.drawBitmap(bitmap, bitmap_transform, paint);
    Matrix full_transform = new Matrix(canvas.getMatrix());
    full_transform.postConcat(bitmap_transform);
    float[] center = new float[] {bitmap.getHeight()/2.0, bitmap.getWidth()/2.0};
    full_transform.mapPoints(center);
    

    或者,如果您在没有矩阵的情况下对位图应用转换,您可以使用具有相同值的full_transform.postRotatefull_transform.postScale 等。特别是,如果您使用drawBitmap(bitmap, left, top, paint) 绘制位图,那么您需要使用full_transform.postTranslate(left, top)

    【讨论】:

      【解决方案2】:

      如果您正在寻找“最简单”的方法,那么只需使用 translate 旋转和缩放功能即可解决问题。开发这些的原因是开发人员不必为简单的动画进行矢量演算。此外,从这个意义上说,您必须实际计算的唯一值是考虑原始坐标后的平移值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-08
        • 1970-01-01
        • 1970-01-01
        • 2011-08-31
        相关资源
        最近更新 更多