安卓中Paint与Canvas用法

来源:互联网 发布:淘宝上旺旺点不开 编辑:程序博客网 时间:2024/06/02 12:37

Paint的基本设置函数:

  • paint.setAntiAlias(true);//抗锯齿功能
  • paint.setColor(Color.RED);  //设置画笔颜色    
  • paint.setStyle(Style.FILL);//设置填充样式
  • paint.setStrokeWidth(30);//设置画笔宽度
  • paint.setShadowLayer(10, 15, 15, Color.GREEN);//设置阴影
填充样式有:Paint.Style.FILL    :填充内部
Paint.Style.FILL_AND_STROKE  :填充内部和描边
Paint.Style.STROKE  :仅描边

看下这三个类型的不同,下面以画的一个圆形为例:


可见,FILL与FILL_AND_STROKE没什么区别

setShadowLayer (float radius, float dx, float dy, int color)    添加阴影

参数:

radius:阴影的倾斜度
dx:水平位移
dy:垂直位移,如paint.setShadowLayer(101515, Color.GREEN);//设置阴影


然后是Canvas的基本设置:

画布背景设置:

  • canvas.drawColor(Color.BLUE);
  • canvas.drawRGB(255, 255, 0);   //这两个功能一样,都是用来设置背景颜色的。
画直线void drawLine (float startX, float startY, float stopX, float stopY, Paint paint)

参数:

startX:开始点X坐标
startY:开始点Y坐标
stopX:结束点X坐标
stopY:结束点Y坐标

如:
  1. canvas.drawLine(100100200200, paint);  


  2. 2、多条直线

    void drawLines (float[] pts, Paint paint)
    void drawLines (float[] pts, int offset, int count, Paint paint)

    参数:

    pts:是点的集合,大家下面可以看到,这里不是形成连接线,而是每两个点形成一条直线,pts的组织方式为{x1,y1,x2,y2,x3,y3,……}
  3. 如:
    1. float []pts={10,10,100,100,200,200,400,400};  
    2. canvas.drawLines(pts, paint);上面有四个点:(10,10)、(100,100),(200,200),(400,400)),两两连成一条直线 


点:drawPoint (float x, float y, Paint paint)

参数:
float X:点的X坐标
float Y:点的Y坐标

如:

  1. canvas.drawPoint(100100, paint);  


  2. 多个点:
  3. void drawPoints (float[] pts, Paint paint)
    void drawPoints (float[] pts, int offset, int count, Paint paint)
  4. 参数:
    float[] pts:点的合集,与上面直线一直,样式为{x1,y1,x2,y2,x3,y3,……}
    int offset:集合中跳过的数值个数,注意不是点的个数!一个点是两个数值;
    count:参与绘制的数值的个数,指pts[]里人数值个数,而不是点的个数,因为一个点是两个数值

    下面举例说明上面offset与count的含义:(跳过第一个点,画出后面两个点,第四个点不画),注意一个点是两个数值!

    如:
    1. float []pts={10,10,100,100,200,200,400,400};  
    2. canvas.drawPoints(pts, 24, paint);  
    3. (同样是上面的四个点:(10,10)、(100,100),(200,200),(400,400),drawPoints里路过前两个数值,即第一个点横纵坐标,画出后面四个数值代表的点,即第二,第三个点,第四个点没画;效果图如下)


    矩形工具类RectF与Rect:


  5. 这两个都是矩形辅助类,区别不大,用哪个都行,根据四个点构建一个矩形结构;在画图时,利用这个矩形结构可以画出对应的矩形或者与其它图形Region相交、相加等等;


void drawRect (float left, float top, float right, float bottom, Paint paint)
void drawRect (RectF rect, Paint paint)
void drawRect (Rect r, Paint paint)

参数:

第一个的写法是直接传入矩形的四个点,画出矩形

第二、三个构造函数是根据传入RectF或者Rect矩形变量来指定所画的矩形的

圆角矩形:

void drawRoundRect (RectF rect, float rx, float ry, Paint paint)

参数:
RectF rect:要画的矩形
float rx:生成圆角的椭圆的X轴半径
float ry:生成圆角的椭圆的Y轴半径

  1. RectF rect = new RectF(10010300100);  
  2. canvas.drawRoundRect(rect, 2010, paint); 


圆形:void drawCircle (float cx, float cy, float radius, Paint paint)
参数:
float cx:圆心点X轴坐标 
float cy:圆心点Y轴坐标
float radius:圆的半径
  1. canvas.drawCircle(150150100, paint);  

椭圆:

椭圆是根据矩形生成的,以矩形的长为椭圆的X轴,矩形的宽为椭圆的Y轴,建立的椭圆图形

void drawOval (RectF oval, Paint paint)

参数:
RectF oval:用来生成椭圆的矩形


弧:

弧是椭圆的一部分,而椭圆是根据矩形来生成的,所以弧当然也是根据矩形来生成的;

void drawArc (RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)

参数:
RectF oval:生成椭圆的矩形
float startAngle:弧开始的角度,以X轴正方向为0度
float sweepAngle:弧持续的角度
boolean useCenter:是否有弧的两边,True,两边,False,只有一条弧

将画笔设为描边,效果:

  1. RectF rect1 = new RectF(10010300100);  
  2. canvas.drawArc(rect1, 090true, paint);  
  3.   
  4. RectF rect2 = new RectF(40010600100);  
  5. canvas.drawArc(rect2, 090false, paint);  


















0 0
原创粉丝点击