我测试过这里mPolyMatrix.postTranslate(0,200);换成mPolyMatrix.preTranslate(0,200);效果不一样,主要区别在`右上`和`右下`这个2个坐标点不一样,请问这里怎么区别用哪个方法?
chenbo-boy opened this issue · 1 comments
chenbo-boy commented
我测试过这里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);**
}
GcsSloop commented
post 和 pre 构造出来的方程式不同,结果自然不同。
如果平移写在后面而且不想让平移影响到之前的操作就用post。