一 Paint基础使用方法
1 Paint.setStyle(Style style) 设置绘制模式
Paint.setColor(int color) 是 Paint 最常用的方法之一,用来设置绘制内容的颜色。你不止可以用它画红色的圆,也可以用它来画红色的矩形、红色的五角星、红色的文字。
2 Paint.setColor(int color) 设置颜色
setStyle(Style style) 这个方法设置的是绘制的 Style 。Style 具体来说有三种: FILL, STROKE 和 FILL_AND_STROKE 。FILL 是填充模式,STROKE 是画线模式(即勾边模式),FILL_AND_STROKE 是两种模式一并使用:既画线又填充。它的默认值是 FILL,填充模式
3 Paint.setStrokeWidth(float width) 设置线条宽度
在 STROKE 和 FILL_AND_STROKE 下,还可以使用 paint.setStrokeWidth(float width) 来设置线条的宽度:
4 Paint.setTextSize(float textSize) 设置文字大小
在绘制的时候,往往需要开启抗锯齿来让图形和文字的边缘更加平滑。开启抗锯齿很简单,只要在 new Paint() 的时候加上一个 ANTI_ALIAS_FLAG 参数就行:Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
也可以使用 Paint.setAntiAlias(boolean aa) 来动态开关抗锯齿
5 Paint.setAntiAlias(boolean aa) 设置抗锯齿开关
通过 Paint.setTextSize(textSize),可以设置文字的大小
6 Path.setFillType(Path.FillType ft) 设置填充方式
是用来设置图形自相交时的填充算法的
二 Canvas.drawX()方法
1 画圆 Canvas.drawCircle(x,y,r,paint) 圆心坐标xy 半径r
val paint = Paint(Paint.ANTI_ALIAS_FLAG)
canvas.drawCircle(300f, 300f, 300f, paint)
2 画矩形 canvas.drawRect(l,t,r,b,paint) 矩形四条边 距离坐标轴的距离
val paint = Paint(Paint.ANTI_ALIAS_FLAG)
canvas.drawRect(100f, 100f, 600f, 900f, paint)
3 画点 canvas.drawPoint(x,y,paint) 点的坐标xy 在paint.setStrokeCap设置点的样式 圆点 还是方点
val paint = Paint(Paint.ANTI_ALIAS_FLAG)
paint.strokeCap = Paint.Cap.SQUARE
canvas.drawPoint(100f, 100f, paint)
4 画椭圆 canvas.drawOval(l,t,r,b,paint) 椭圆四个顶点到坐标轴的距离
val paint = Paint(Paint.ANTI_ALIAS_FLAG)
canvas.drawLine(0f,30f,100f,30f,paint)
5 画线 canvas.drawLine(sx,sy,ex,ey,paint) 起始点左边sx sy 终止点坐标ex ey
val paint=Paint()
canvas.drawLine(0f,30f,100f,30f,paint)
6 画圆角矩形 canvas.drawRoundRect(r,h,v,paint) r:矩形坐标 h v:横向和纵向的直径距离
val paint = Paint()
canvas.drawRoundRect(RectF(100f, 100f, 500f, 300f), 50f, 70f, paint)
7 画弧形或扇形或曲线 canvas.drawArc(r,sw,ew,userCenter,paint) r:图形所在椭圆的坐标 sw:起始角度 ew:划过角度 userCenter 是否连接中心点 最终图片 是弧形或扇形或曲线 取决去是否连接中心点 和 是否填充图形
val paint = Paint()
paint.style=Paint.Style.FILL
canvas.drawArc(RectF(200f,200f,800f,500f),-100f,100f,true,paint)
canvas.drawArc(RectF(200f,200f,800f,500f),20f,140f,false,paint)
paint.style=Paint.Style.STROKE
canvas.drawArc(RectF(200f,200f,800f,500f),180f,60f,true,paint)
8 画路径path canvas.drawPath()画复杂图像会用到 比如画心
画心型
val paint = Paint()
val path = Path()
path.addArc(RectF(200f, 200f, 400f, 400f), -225f, 225f)
path.arcTo(RectF(400f, 200f, 600f, 400f), -180f, 225f, false)
path.lineTo(400f, 542f)
path.close()
canvas.drawPath(path,paint)
画三角
val paint=Paint()
paint.style= Paint.Style.STROKE
val path= Path()
path.lineTo(100f,100f)
path.moveTo(200f,100f)
path.lineTo(200f,0f)
canvas.drawPath(path,paint)
9 画图像 drawBitmap(Bitmap bitmap, float left, float top, Paint paint) 画 Bitmap 绘制 Bitmap 对象,也就是把这个 Bitmap 中的像素内容贴过来。其中 left 和 top 是要把 bitmap 绘制到的位置坐标。它的使用非常简单
val paint=Paint()
canvas.drawBitmap(bitmap,left,top,paint)
10 画文字 drawText(String text, float x, float y, Paint paint) 绘制文字
val paint=Paint()
canvas.drawText(text,x,y,paint)