画笔调整好之后,需要绘制到画布上,就要用到Canvas类。把Canvas当作画布,就可以在画布上绘制我们想要的东西。
还需要设置一些画布的属性,比如颜色,尺寸等。
在实际开发中可能对某个图形执行旋转,缩放和其他操作,我们可以通过旋转画布来实现,但是旋转画布会旋转画布上的所有对象。
如果只需要旋转一个,就要用到save方法来锁定需要操作的对象,在操作之后通过restore方法来解除锁定。
package ....;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.View;
public class GameView extends View implements Runnable
{
//声明Paint对象
private Paint mPaint = null;
public GameView(Context context)
{
super(context);
//构建对象
mPaint = new Paint();
//开启线程
new Thread(this).start();
}
public void onDraw(Canvas canvas)
{
super.onDraw(canvas);
//设置画布的颜色
canvas.drawColor(Color.BLACK);
//设置取消锯齿效果
mPaint.setAntiAlias(true);
//设置裁剪区域
canvas.clipRect(10,10,280,260);
//锁定画布
canvas.save();
//旋转画布
canvas.rotate(45.0f);
//设置颜色和绘制矩形
mPaint.setColor(Color.RED);
canvas.drawRect(new Rect(15,15,140,70),mPaint);
//解除画布的锁定
canvas.restore();
//设置颜色和绘制另一个矩形
mPaint.setColor(Color.GREEN);
canvas.drawRect(new Rect(150,74,260,120),mPaint);
}
@Override
public void run()
{
while(!Thread.currentThread().isInterrupted())
{
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
Thread.currentThread().interrupt();
}
//使用postInvalidate可以直接在线程中更新界面
postInvalidate();
}
}
}