ITEEDU

Camera

Camera就像一个摄像机,一个物体在原地不动,然后我们带着这个摄像机四处移动,在摄像机里面呈现出来的画面,就会有立体感,就可以从各个角度观看这个物体。

它有旋转、平移的一系列方法,实际上都是在改变一个Matrix对象,一系列操作完毕之后,我们得到这个Matrix,然后画我们的物体,就可以了。

使用步骤:

Matrix matrix = new Matrix();
Camera c = new Camera();
c.save();
//进行旋转平移操作
 c.getMatrix(matrix); //生成对应操作的矩阵保存到matrix 中。
c.restore();  

Camera只有两中操作,translate和rotate。

生成的Matrix 是变换的关键。

public class MyView extends View {
	private Bitmap mBitmap;
	private Matrix mMatrix = new Matrix();
	Camera c=new Camera();
	public MyView(Context context) {
		super (context);
		initialize();
	}
	private void initialize() {
		Bitmap bmp = 
((BitmapDrawable)getResources().getDrawable(R.drawable.sample_2)).getBitmap();
		mBitmap = bmp;
		c.save();
		c.rotateY(60);
		c.getMatrix(mMatrix);
		c.restore();
		
	}
	@Override protected void onDraw(Canvas canvas) {
		// super.onDraw(canvas); //如果界面上还有其他元素需要绘制,只需要将这句话写上就行了。
		canvas.drawBitmap(mBitmap, mMatrix, null );
	}
}

变换API接口:

  1. rotateX(float degree) 绕着x轴旋转degree个度数
  2. rotateY(float degree) 绕着y轴旋转degree个度数
  3. rotateZ(float degree) 绕着z轴旋转degree个度数
  4. rotate(float x, float y, float z)
  5. translate(float x,float y,float z) 平移一段距离
  6. save()和restore() 作用跟Canvas的一样,保存原状态,操作完之后,恢复到原状态。