对绘图的基本理解
绘图的两个基本工具是Paint跟Canvas
Canvas 决定画什么(简称View) 例如 点、线、面、圆
Paint 决定怎么画(简称Style) 例如 颜色、线条粗细等。
Paint的常用方法
1 | //设置画笔边框粗细,值越大,越粗 |
如果要绘制多边形,可以通过Path类 ,然后通过drawPath方法来画出该形状。
Canvas的常用方法
1 | //画矩形 |
示例 - 绘制弧形
1 | //绘制红色的矩形 |
示例 - 绘制三角形
1 | Path path = new Path(); |
技巧
关于画文字:
如何让drawText内容居中?
1.画存放文字的矩形。
2.paint设置TextAlign,Paint.Align.CENTER
3.drawText使用矩形的centerX、bottom作为中心点
path 画线时,若path调用了close,则setStrokeCap无效
画矩形、椭圆、扇形、弧线、文字都需要先画一个矩形,(获取其对角线两个点的坐标即可)
drawArc(float left, float top, float right, float bottom, float startAngle,
float sweepAngle, boolean useCenter, @NonNull Paint paint)
关于画扇形、弧线:
1.顺时针为正角度。
2.startAngle表示角度,sweepAngle表示变化的角度(例如 -60表示逆时针旋转60度),useCenter表示扇形是否连接到中心点。
关于Path的使用:
1.addArc用于绘制弧线
2.lineTo、arcTo都用于画线。arcTo用于画弧线。forceMoveTo表示是否强制移动到弧线起点。
arcTo(float left, float top, float right, float bottom, float startAngle,
float sweepAngle, boolean forceMoveTo)
颜色的处理:
1.setColor、setRGB
2.setColorFilter(设置颜色过滤)、setShader (设置各种渐变)
3.setXferMode(设置图层显示方式)
线的处理:
1.setStrokeWidth
2.setStrokeCap(设置线头形状)
3.setStrokeJoin(设置拐角形状)
4.setStrokeMiter(设置拐角延长线)
5.setPathEffect(设置轮廓的形状)
关于图层的显示:
- 先画的叫DST,后画的是SRC
- DST_OVER表示A在B上
- DST_OUT表示在A上挖空B
- DST_IN表示重叠部分变成前者的颜色,不重叠部分变成白色
canvas.translate(x,y)表示绘制容器相对原来的起始坐标,横向移动了x,纵向移动了y,并不是表示将绘制容器的起始点移动到点(x,y)
绘制文字:
1.drawText
2.drawTextOnPath
3.如何绘制多行文字
StaticLayout
4.setTypeface设置字体
paint.setTypeface(Typeface.createFromAsset(getContext().getAssets(), “Satisfy-Regular.ttf”));
5.setFakeBoldText设置粗体
6.setLetterSpacing设置间距
7.getTextBounds获取文字的显示范围
8.measureText测量文字的宽度并返回