Canvas的基本用法

旧城等待, 2022-03-10 12:58 395阅读 0赞

代码地址如下:
http://www.demodashi.com/demo/14723.html

####前言
在之前讲过画笔Paint的基本使用,这篇文章让我们来了解下画布—Canvas的基本使用。
相关文章:
自定义控件概述
Paint的基本使用

今天讲解的内容有:

  1. Canvas设置背景
  2. Canvas画Point
  3. Canvas画直线
  4. 矩形构造方法
  5. canvas画矩形
  6. Color颜色的构建和提取
  7. Canvas用直线画”正”字示例
  8. 项目结构图和效果图
    #####一.Canvas设置背景
    canvas设置背景有三种方法:

    // canvas.drawARGB(23,55,70,32);
    // canvas.drawRGB(77,120,240);
    canvas.drawColor(Color.WHITE);

#####二.Canvas画Point
canvas画点的方法如下:

  1. Paint paint=new Paint();
  2. paint.setColor(Color.RED);//设置颜色
  3. //画点的时候,Paint的style设置无效,故此处不设置Paint.Style
  4. paint.setStrokeWidth(30f);
  5. //画点
  6. canvas.drawPoint(500,100,paint);
  7. //注:画出的点是方块,而不是圆.

需要注意的是,画点时,设置Paint的style无效,且画出来的点不是圆的,而是实心小方块。
#####三.Canvas画直线
canvas画直线的方法如下:

  1. canvas.drawLine(float startX,float startY,float stopX,float stopY,Paint paint);

其中 startX:画线起点x坐标
startY:画线起点y坐标
stopX: 画线结束点x坐标
stopY: 画线结束点y坐标
#####四.矩形构造方法
矩形分为 Rect 和 RectF 两个类,这两个类的用法基本一样,区别是 Rect 构造的时候,对应传的坐标值为 int 数据类型,而RectF 构造的时候,对应传的坐标值为 float 数据类型
######4.1 Rect的构造方法

  1. Rect rect=new Rect();
  2. Rect rect=new Rect(Rect r);
  3. Rect rect=new Rect(int left,int top,int right,int bottom);

######4.2 RectF的构造方法

  1. RectF rectf=new RectF();
  2. RectF rectf=new RectF(Rect r);
  3. RectF rectf=new RectF(RectF rf);
  4. RectF rectf=new RectF(float left,float top,float right,float bottom);

#####五.canvas画矩形
canvas画矩形有两种方式,直接画矩形或先构造矩形,然后将矩形设置到canvas上
######5.1 canvas直接画矩形

  1. canvas.drawRect(float left,float top,float right,float bottom,Paint paint);

注意 canvas直接画矩形的时候,坐标参数为float类型。
######5.2 先画矩形,再设置到画布上
canvas设置矩形的方法是这样的:

  1. canvas.drawRect(Rect rect,Paint paint);
  2. canvas.drawRect(RectF rectf,Paint paint);

若想在canvas上画矩形,你可以这样:

  1. Rect rect=new Rect(50,450,200,600);
  2. canvas.drawRect(rect,paint);

或者像这样:

  1. Rect rect=new Rect();
  2. rect.set(50,450,200,600);
  3. canvas.drawRect(rect,paint);

#####六. Color颜色的构建和提取
######6.1 Color颜色的构建

  1. Color.argb(int alpha,int red,int green,int blue);
  2. Color.rgb(int red,int green,int blue);

######6.2 Color颜色的提取

  1. int alpha=Color.alpha(0xff5e73df);
  2. int red=Color.red(0xff5e73df);
  3. int green=Color.green(0xff5e73df);
  4. int blue=Color.blue(0xff5e73df);

#####七.Canvas用直线画”正”字示例
具体代码demo中有,这里主要介绍下自定义控间Canvas在MainActivity对应的activity_main.xml中的引用代码如下:

  1. <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:app="http://schemas.android.com/apk/res-auto"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:background="@color/white"
  7. tools:context="com.android.testdemo.main.MainActivity">
  8. <com.android.testdemo.animation.CanvasView
  9. android:layout_width="match_parent"
  10. android:layout_height="match_parent"/>
  11. </android.support.constraint.ConstraintLayout>

#####八. 项目结构图和效果图

项目结构图

xmszkoSsbPcbOclQucw.png

效果图

lALJc7MulBZOaMY03Yn.jpg

Canvas的基本用法

代码地址如下:
http://www.demodashi.com/demo/14723.html

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

发表评论

表情:
评论列表 (有 0 条评论,395人围观)

还没有评论,来说两句吧...

相关阅读

    相关 AsyncTask基本

    在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。在单线程模型中始终要记住两条法则:  1.

    相关 Markdown基本

    导语 > Markdown是一种轻量级的标记语言,它的有点有很多,目前也越来越多的写作爱好者广泛使用.Markdown的语法十分简单,常用的标记符号也不超过十个。对于更为

    相关 canvas基本

    > canvas是一个强大的绘图及制作动画和游戏手段,下面介绍canvas利用js的API实现基本画图功能。 划线: <!DOCTYPE html> <ht

    相关 Collections基本

    今天遇到了个情况,就是把集合中的时间数据,倒序排列并展示,我想到的办法是,先把时间转化成时间戳,然后在进行比较大小,但是这种方法比较麻烦,所以找到了这个collections,