• 自定义控件详解(一):Paint类与Canvas类


    前言:  

      自定义控件必需的两个类:Paint与Canvas

      Paint    ---  相当于绘图的"笔"

      Canvas --- 相当于绘图的"纸"

      

    一、Paint  

      绘图笔,即用来设定比如 颜色、线条宽度、线条透明度等熟悉的。

      看一下Paint类所有的setXX() 方法 

      

      

       其中常用的:

    • paint.setAntiAlias(true);//抗锯齿功能
    • paint.setColor(Color.RED);  //设置画笔颜色    
    • paint.setStyle(Style.FILL);//设置填充样式
    • paint.setStrokeWidth(10);//设置画笔宽度 ,单位px
    • paint.setShadowLayer(10, 15, 15, Color.GREEN);//设置阴影

      这里简单介绍下 第3个、第5个 方法的属性

      1、paint.setStyle(Style.XXX); //设置填充样式

      

      Style.FILL ,即 画笔填充 ,比如你要画一个矩形,那么这个矩形内部是填充了的

      

      Style.STROKE ,即画笔画出的只有边框,

       

      Style.FILL_AND_STROKE ,即边框线条和内部填充都有

      

      

      2、paint.setShadowLayer(10, 15, 15, Color.GREEN);//设置阴影

        

       (1)、radius(角度),即阴影的倾斜角度,

         (2)、dx ,即阴影x方向偏移量

       (3)、dy ,即阴影y方向偏移量

         (4)、shadowColor ,即阴影的颜色

        

    二、Canvas

      画布、纸。

      Canvas类的主要方法是drawXXX() , 即 画线条,画圆形,画矩形,画文字,画椭圆 等等

      

    三、实践

      我们写几个例子,用Paint控制画笔的线条宽度,颜色等属性

              用Canvas控制画出的形状

      首先自定义一个类继承自 View 类 重写三个构造方法

      

     重写onDraw()方法,该方法用于绘制自定义控件

      @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
    
            // 设置画笔的属性
            paint = new Paint();
            paint.setStyle(Paint.Style.FILL);
            paint.setColor(Color.RED);
            paint.setStrokeWidth(2); //单位px
            paint.setTextSize(30); //设置文本大小
    
            // 设置画布的属性 ,注意这里onDraw()方法参数有Canvas对象了  不要在 new 一个了
            canvas.drawRGB(255, 255,255);
            canvas.drawLine(200,200,600,200,paint); //画一条从坐标(200,200) 到 坐标(600,200) 颜色为红色的 横向直线
            canvas.drawRect(200,420,600,520,paint); //画一条左上角坐标(200,420) ,宽度400 高度100的 红色实心矩形
            canvas.drawCircle(400,800,100,paint);    //画一条圆心坐标(400,800) 半径100 的红色实心圆形
            canvas.drawText("这是画出来的文本",200,1000,paint); //画一条左侧开始坐标(200,1000)的文本
    
        }

      

      在activity中使用

      

    效果图:

  • 相关阅读:
    43前端
    42 前端
    python 列表
    python 字符串方法
    python while语句
    zhy2_rehat6_mysql02
    zhy2_rehat6_mysql01
    bay——安装_Oracle 12C-RAC-Centos7.txt
    bay——RAC_ASM ORA-15001 diskgroup DATA does not exist or is not mounted.docx
    bay——Oracle RAC集群体系结构.docx
  • 原文地址:https://www.cnblogs.com/xqxacm/p/6651765.html
Copyright © 2020-2023  润新知