小编Idi*_*tic的帖子

如何使用android.graphics.Camera.rotateX(角度)在特定点旋转画布

我试图使用Camera(android.graphics.Camera而不是硬件相机)围绕特定点旋转视图画布,在这个实例中是画布的中间.

在dispatchDraw(Canvas画布)中 - 为了简洁起见,我将所有非重要部分都省略了.

camera.save();
   camera.rotateX(0);
   camera.rotateY(0);
   camera.rotateZ(angle);
   camera.getMatrix(cameraMatrix);
 camera.restore(); 

 canvas.concat( cameraMatrix );
Run Code Online (Sandbox Code Playgroud)

画布旋转,但始终从左上角开始.

注意:因为画布的构造比显示区域大,我还需要翻译最终结果,使其在显示中居中,我可以用

canvas.translate(xOffset,yOffset) PRIOR to calling the camera methods
Run Code Online (Sandbox Code Playgroud)

要么

cameraMatrix.preTranslate(xOffset,yOffset) AFTER the camera methods
Run Code Online (Sandbox Code Playgroud)

两者都正确地将画布中心放在显示器中,但我似乎无法将旋转点作为camera.rotateZ(角度)调用的中心,尝试使用3D android示例中的方法但是它们似乎适用于它们的X/Y轴似乎不影响Z轴

任何帮助将不胜感激,文档并不完全冗长.

3d camera android canvas rotation

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

3d ×1

android ×1

camera ×1

canvas ×1

rotation ×1