android camera x旋转,如何使用android.graphics.Camera.rotateX(角度)在特定点旋转画布
解決了這個問題,不確定它是否是最好的方式,但它有效.解決方案是
首先翻譯畫布,使較大的畫布居中顯示
然后應用相機旋轉
然后在矩陣上使用pre和post translate方法來改變旋轉點,類似于android示例所做的.
缺少的部分是首先進行畫布翻譯,我也沒有使用更大的畫布大小來計算翻譯前和翻譯后方法的偏移量.
這是修改后的代碼,如果它可以幫助其他任何人.
// Center larger canvas in display (was made larger so
// corners will not show when rotated)
canvas.translate(-translateX,-translateY);
// Use the camera to rotate a view on any axis
camera.save();
camera.rotateX(0);
camera.rotateY(0);
camera.rotateZ(angle); // Rotate around Z access (similar to canvas.rotate)
camera.getMatrix(cameraMatrix);
// This moves the center of the view into the upper left corner (0,0)
// which is necessary because Matrix always uses 0,as it's transform point
cameraMatrix.preTranslate(-centerScaled,-centerScaled);
// NOTE: Camera Rotations logically happens here when the canvas has the
// matrix applied in the canvas.concat method
// This happens after the camera rotations are applied,moving the view
// back to where it belongs,allowing us to rotate around the center or
// any point we choose
cameraMatrix.postTranslate(centerScaled,centerScaled);
camera.restore();
canvas.concat(cameraMatrix);
如果有人有更好的方法或看到問題,請發表評論.
總結
以上是生活随笔為你收集整理的android camera x旋转,如何使用android.graphics.Camera.rotateX(角度)在特定点旋转画布的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中兴面试题1
- 下一篇: Wonderware配置-Intouch