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

简介: 前言:    自定义控件必需的两个类:Paint与Canvas  Paint    ---  相当于绘图的"笔"  Canvas --- 相当于绘图的"纸"  一、Paint    绘图笔,即用来设定比如 颜色、线条宽度、线条透明度等熟悉的。

 

前言:  

  自定义控件必需的两个类: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中使用

  

 

效果图:

 

 

相关文章
|
10月前
|
开发者
Qt 布局(QSplitter 类&QDockWidget 类) 总结
Qt 布局(QSplitter 类&QDockWidget 类) 总结
Qt 布局(QSplitter 类&QDockWidget 类) 总结
|
10月前
|
存储 C# 开发者
C# | 通过反射将对象属性展示在TreeView中
在编程过程中,我们经常需要处理复杂的对象和数据结构。将这些数据结构展示在UI界面上是很有用的,可以帮助开发者更好地理解和分析数据。 而TreeView作为一种常见的控件,可以以树状结构的方式展示数据,非常适合用于展示层次化的对象。 本文将介绍如何使用TreeView控件展示一个对象,并且可以动态处理对象中的属性和子对象。通过本文的学习,您将学会如何更好地理解和展示数据,提高编程效率。
92 0
C# | 通过反射将对象属性展示在TreeView中
|
10月前
|
编译器 C++
C++11(新的类功能,可变参数模板,empalce函数)
C++11(新的类功能,可变参数模板,empalce函数)
77 0
|
JavaScript 开发者
veu 中通过属性绑定为元素设置 class 类样式 | 学习笔记
快速学习 veu 中通过属性绑定为元素设置 class 类样式
191 0
veu  中通过属性绑定为元素设置 class 类样式  |  学习笔记
C#编程-130:Brush的五个继承类
C#编程-130:Brush的五个继承类
273 0
C#编程-130:Brush的五个继承类
|
C#
WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性
原文:WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性 如果你要自定义一个图片按钮控件,那么如何在主窗体绑定这个控件上图片的Source呢? 我向大家介绍一个用 依赖属性(DependencyProperty) 实现的方法。
2519 0
|
容器 数据格式 XML
View的绘制流程和自定义常用方法的简述
View绘制的方法及过程 1、MyView() 构造方法,这个不做解释,铁定第一个被调用。 作用:传入Context 2、onFinishInflate() 当View中所有的子控件均被映射成xml后触发 3、onMeasure() 在View放置到父...
911 0
|
前端开发
自定义View的各个重要的类和属性
        1 、Path类详解 2、Paint详解 3、Canvas详解 4 、绘制雷达图
623 0