GcsSloop/AndroidNote

我测试过这里mPolyMatrix.postTranslate(0,200);换成mPolyMatrix.preTranslate(0,200);效果不一样,主要区别在`右上`和`右下`这个2个坐标点不一样,请问这里怎么区别用哪个方法?

chenbo-boy opened this issue · 1 comments

我测试过这里mPolyMatrix.postTranslate(0,200);换成mPolyMatrix.preTranslate(0,200);效果不一样,主要区别在右上右下这个2个坐标点不一样,请问这里怎么区别用哪个方法?
private void initBitmapAndMatrix() {
mBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.poly_test);

    mPolyMatrix = new Matrix();


    float[] src = {0, 0,                                    // 左上
            mBitmap.getWidth(), 0,                          // 右上
            mBitmap.getWidth(), mBitmap.getHeight(),        // 右下
            0, mBitmap.getHeight()};                        // 左下

    float[] dst = {0, 0,                                    // 左上
            mBitmap.getWidth(), 400,                        // 右上
            mBitmap.getWidth(), mBitmap.getHeight() - 200,  // 右下
            0, mBitmap.getHeight()};                        // 左下

    // 核心要点
    mPolyMatrix.setPolyToPoly(src, 0, dst, 0, src.length >> 1); // src.length >> 1 为位移运算 相当于处以2

    // 此处为了更好的显示对图片进行了等比缩放和平移(图片本身有点大)
    mPolyMatrix.postScale(0.26f, 0.26f);
    **# mPolyMatrix.postTranslate(0,200);**
}

post 和 pre 构造出来的方程式不同,结果自然不同。
如果平移写在后面而且不想让平移影响到之前的操作就用post。