自定义View--Canvas和Paint详解

转自http://blog.csdn.net/to_be_designer/article/details/48500801

    Android给我们提供了大量的View控件,但这还是远远满足不了我们的要求,
    有时候开发所需要的控件形式是在Android提供的控件中是不存在,
    这就需要我们自己去定义一个。那么如何自定义控件? 
   学习自定义控件,首先要先掌握Canvas类的使用。 

Canvas

    Canvas, 我们称之为“画布“,主要适用于绘制View的。 
Canvas中提供了大量绘制图形的方法:
  • 绘制扇形:

    drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint): 
    
    第一个参数RectF对象,指定扇形的区域;
    第二个参数是起始角度;
    第四个参数是是否填充,true为填充,false为不填充,也就是为一条弧线;
    第五个参数是绘制图形的画笔对象Paint。 
    
    RectF: 
    通过RectF(float left, float top, float right, float bottom)构造器创建RectF对象,
    我们通过下图理解各个参数的含义,RectF对象指代的就是一个矩形区域。我们通过这四个参数构建矩形区域。 
    

    这里写图片描述

    Paint: 
    是绘制所有图形所用到的一个画笔,我们在稍后讲解。
    
    drawArc(float left, float top, float right, float bottom, float startAngle, float sweepAngle, boolean useCenter, Paint paint) 
    这个是将扇形区域左,上,右,下边的坐标直接输入,而不是通过RectF对象。其他参数同上。
    
    绘制圆形:
    
    drawCircle(float cx, float cy, float radius, Paint paint) 
    第一、二个参数是指圆形的x, y坐标; 第三个参数是半径; 第四个参数是画笔Paint对象。
    
    绘制直线:
    
    drawLine(float startX, float startY, float stopX, float stopY, Paint paint) 
    两点确定一条直线,第一、二参数是起始点的坐标;第三、四参数是结束点的坐标;第五个参数画笔Paint对象。
    
    drawLines(float[] pts, Paint paint) 
    
    多个点确定一条直线,第一个参数是点的数组;第二个参数是画笔Paint对象。
    drawLines(float[] pts, int offset, int count, Paint paint)
    
    绘制椭圆:
    
    drawOval(float left, float top, float right, float bottom, Paint paint) 
    前四个参数是椭圆的左,上,右,下边的坐标,第五个是画笔Paint对象。
    
    drawOval(RectF oval, Paint paint)  
    第一个参数是RectF对象, 第二个参数是画笔Paint对象。
    
    绘制矩形:
    
    drawRect(RectF rect, Paint paint) 
    第一个参数是RectF对象, 第二个参数是画笔Paint对象。
    
    绘制点:
    drawPoint(float x, float y, Paint paint) 
    第一、二个参数点的坐标,第三个参数为Paint对象。
    
    渲染文本:
    drawText(String text, float x, floaty, Paint paint)
    drawText(CharSequence text, int start, int end, float x, float y, Paint paint)
    drawText(char[] text, int index, int count, float x, float y, Paint paint)
    drawText(String text, int start, int end, float x, float y, Paint paint)
    
  • Canvas中还给我们提供了很多绘制其他图形的方法,这里我们不在一一列举。我们来看一下Paint”画笔“。

Paint

    Paint是用于绘制的画笔,Canvas就像是我们的画纸,我们需要笔才可以完成一整幅图。
    Paint中为我们提供了很多设置的方法(我们这里只列举常用的方法):
  • setARGB(int a, int r, int g, int b)
      设置 Paint对象颜色,参数一为alpha透明值
  • setAlpha(int a)
      设置alpha不透明度,范围为0~255
  • setAntiAlias(boolean aa)
       是否抗锯齿,这个一般是都要设置的。
  • setColor(int color)
      设置颜色,这里Android内部定义的有Color类包含了一些常见颜色定义
  • setTextScaleX(float scaleX)
      设置文本缩放倍数,1.0f为原始
  • setTextSize(float textSize)
      设置字体大小
  • setUnderlineText(booleanunderlineText)
      设置下划线
  • setStrokeCap(Paint.Cap cap)
      当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的图形样式,如圆形样式 Cap.ROUND,或方形样式Cap.SQUARE
  • setSrokeJoin(Paint.Join join)
      设置绘制时各图形的结合方式,如平滑效果等
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值