笔记—自定义View之绘制基础

来源:互联网 发布:保定安全教育网络平台 编辑:程序博客网 时间:2024/05/16 07:34

一 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)
原创粉丝点击