私は画像を変換するための行列を持っています。古い行列は、スケールと変換の関数です。 スケールや平行移動などの他の変換に影響を与えずに、古いMatrixの中心から回転を適用する方法。古い行列で回転変換を適用する
私はすでに、私は回転の欲望の結果を取得できませんでした。この
//get old matrix
Matrix matrix = getImageMatrix();
float tx = getMatrixValue(matrix, Matrix.MTRANS_X);
float ty = getMatrixValue(matrix, Matrix.MTRANS_Y);
float scaleX = getMatrixValue(matrix, Matrix.MSCALE_X);
float scaleY = getMatrixValue(matrix, Matrix.MSCALE_Y);
float skewX = getMatrixValue(matrix, Matrix.MSKEW_X);
float skewY = getMatrixValue(matrix, Matrix.MSKEW_Y);
//calculating the actual scale
float sx = (float)Math.sqrt((scaleX*scaleX)+(skewY*skewY));
float sy = (float)Math.sqrt((scaleY*scaleY)+(skewX*skewX));
//calculating the rotateAngle
float rAngle = Math.round(Math.atan2(scaleX, skewX) * (180/Math.PI));
//calculate the actual width and height of image
float width = sx * drawable.getIntrinsicWidth();
float height = sy * drawable.getIntrinsicHeight();
//calculate the center pivot for rotation
float cx = (width/2)+tx;
float cy = (height/2)+ty;
//Applying Rotation from center pivot
matrix.postTranslate(-cx , -cy);
matrix.postRotate(rotateAngle, (width/2)+tx, (height/2)+ty);
matrix.postTranslate(cx, cy);
setImageMatrix(matrix);
invalidate();
を試してみてください。それは翻訳の変更を行います。私はこれで何をしたのですか..?
は、私は100%確実ではないんだけど、私は問題はあなたが抽出し、その後、TXを再適用しようとしているということであると考えている完全なコードで(なし220以降のライン) http://pastebin.com/NWrNw0Nd
Thnxクリスラーソン私の角度を解決するための天使のように表示するため):.. ..! –