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

一 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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值