织梦CMS - 轻松建站从此开始!

沙龙国际_沙龙国际亚洲第一品牌网上娱乐

当前位置: 主页 > 沙龙国际365 >

(沙龙国际365) 经过matrix平移缩放旋转的图片,如何

时间:2017-07-18 00:25来源:未知 作者:admin 点击:
项目中遇到这样的需求,需要动态求出正在编辑的图片的中心点坐标,编辑操作共有三种,平移,缩放和旋转. 其中平移缩放可以按照如下代码正确求出图片左上角和右下角坐标,但是旋转不可

项目中遇到这样的需求,需要动态求出正在编辑的图片的中心点坐标,编辑操作共有三种,平移,缩放和旋转.
其中平移缩放可以按照如下代码正确求出图片左上角和右下角坐标,但是旋转不可以.

 /**
     *
     * @param matrix imageView的矩阵对象
     * @param imageView 图片对象
     * @return
     */
 public float[] getLeftTop(Matrix matrix, GestureCropImageView imageView) {
        Rect rectTemp = imageView.getDrawable().getBounds();
        float[] values = new float[9];
        matrix.getValues(values);
        //左上角X坐标
        mLeftX = values[2];
        //左上角Y坐标
        mLeftY = values[5];

        //如果旋转的话
        if (mState == ROTATE_STATE) {

            //x0= (x - rx0)*cos(a) - (y - ry0)*sin(a)   rx0 ;
            //
            //y0= (x - rx0)*sin(a)   (y - ry0)*cos(a)   ry0 ;
            //右下角X坐标
            mRightX = (float) ((mRightX - mMidPntX) * Math.cos(mAngle / 180 * Math.PI) - (mRightY - mMidPntY) * Math.sin(mAngle / 180 * Math.PI)   mRightX);
            //右下角Y坐标
            mRightY = (float) ((mRightX - mMidPntX) * Math.sin(mAngle / 180 * Math.PI)   (mRightY - mMidPntY) * Math.cos(mAngle / 180 * Math.PI)   mRightY);


            Log.i(TAG, "宽度 :"   rectTemp.width() * values[0]);
            Log.i(TAG, "长度 :"   rectTemp.height() * values[4]);

        } else {
            //右下角X坐标
            mRightX = values[2]   rectTemp.width() * values[0];
            //右下角Y坐标
            mRightY = values[5]   rectTemp.height() * values[4];
        }

        float[] arr = {mLeftX, mLeftY, mRightX, mRightY};

        return arr;
    }

2.现在已知的条件有,图片旋转的角度,图片按某点旋转的点坐标,左上角的坐标,如何才能求出右下角的坐标?

  • //x0= (x - rx0)cos(a) - (y - ry0)sin(a) rx0 ;
    //y0= (x - rx0)sin(a) (y - ry0)cos(a) ry0 ;

这是我的一种思路,但是出来的结果不对.

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容