概述
我们通过在画布上绘画进行类比,如下:
Canvas:相当于画布,Bitmap提供内存,绘的画会保存在Bitmap中。
Paint:相当于画笔。
有了画笔和画笔我们就可以绘画了。
Paint 类常用方法
设置颜色
/**
* 参数一:Android内部定义的有Color类包含了一些常见颜色定义
* Color.RED 或者 getResources().getColor(android.R.color.holo_blue_bright)
* 或者Color.rgb(255,100,100)或者Color.argb(50,255,100,100)
*/
paint.setColor(int color) // 设置颜色
/**
* 参数一:alpha透明值
*/
paint.setARGB(int a, int r, int g, int b) // 设置 Paint对象颜色
设置不透明度
paint.setAlpha(int a) // 设置alpha不透明度,范围为0~255
设置是否抗锯齿
paint.setAntiAlias(boolean aa) // 是否抗锯齿
设置文本缩放倍数
/**
* 参数一:,1.0f为原始
*/
paint.setTextScaleX(float scaleX) // 设置文本缩放倍数
设置字体大小
paint.setTextSize(float textSize) // 设置字体大小
设置下划线
paint.setUnderlineText(booleanunderlineText) // 设置下划线
设置实心还是空心
/**
* 实心
* /
paint.setStyle(Paint.Style.FILL);
/**
* 空心
* /
paint.setStyle(Paint.Style.STROKE);
设置画笔的粗细
paint.setStrokeWidth(10);
关键点:以上Paint的操作作用在下次绘画的画笔上
Canvas 常用方法
Canvas平移、缩放、旋转、画布的错切
关键点:Canvas平移、缩放、旋转操作作用在下次绘画的画布上
Canvas平移
/**
* 画布向(100,50)方向平移
*
* 参数1: 向X轴方向移动100距离
* 参数2: 向Y轴方向移动50距离
*/
canvas.translate(100, 50);
Canvas缩放
/**
* 在X轴方向放大为原来2倍,Y轴方向方大为原来的4倍
* 参数1: X轴的放大倍数
* 参数2: Y轴的放大倍数
*/
canvas.scale(2, 4);
/**
* 在X轴方向放大为原来2倍,Y轴方向方大为原来的4倍
* 参数1: X轴的放大倍数
* 参数2: Y轴的放大倍数
* 参数3: 原点在X坐标位置
* 参数4: 原点在Y坐标位置
*/
canvas.scale(2, 4,100,100);
Canvas旋转
/**
* 原点为中心,旋转30度(顺时针方向为正方向 )
* 参数: 旋转角度
*/
canvas.rotate(30);
/**
* 以(100,100)为中心,旋转30度,顺时针方向为正方向
* 参数: 旋转角度
*/
canvas.rotate(30,100,100);
Canvas画布的错切
/**
* 参数1:将画布在x方向上倾斜相应的角度,倾斜角度的tan值
* 参数2:将画布在y方向上倾斜相应的角度,倾斜角度的tan值
canvas.skew(1,0);
实例
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint p = new Paint();
p.setColor(Color.argb(50,255,100,100));
canvas.drawRect(0,0,200,200,p); // 以原始Canvas画出一个矩形1
canvas.translate(300,300); // 将Canvas平移(300,300)
p.setColor(Color.argb(50,100,255,100));
canvas.drawRect(0,0,200,200<