1.Canvas类

作用:1.绘制各种图形、图片、字等。2.提供各种方法进行坐标变换(rotate、scale、skew、translate)

获取Canvas:一般是子类继承View并重写onDraw()方法

2.Paint类

作用:用于设置绘制风格,例如:画笔颜色、画笔笔触粗细、连接风格等。

获取Paint类:直接 new Paint();

3.Path类

作用:代表任意多条直线连接而成的任意图形。Canvas根据Path绘制时,可以绘制出任意形状。

子类:用来绘制各种各样的路径效果。(查询,不展开)参考资料:http://blog.csdn.net/x605940745/article/details/17141987

简单使用(参考资料):http://blog.sina.com.cn/s/blog_4d9c3fec0102vyhs.html

4.示例

/**
*创建View
*/
public class TestView extends View {
public TestView(Context context, AttributeSet attrs) {
super(context, attrs);
} @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
/*利用Canvas画板画出长方形*/
Paint paint1 = new Paint();
paint1.setColor(Color.RED);
canvas.drawColor(Color.WHITE);
canvas.drawRect(80,80,120,120,paint1); /*利用Canvas类绘制椭圆形*/
RectF rectF = new RectF(80,150,130,200);
canvas.drawOval(rectF,paint1); /*利用Path类画出三角形*/
Paint paint2 = new Paint();
paint2.setAlpha(40);
paint2.setAntiAlias(true);
paint2.setStyle(Paint.Style.STROKE);
Path path = new Path();
path.moveTo(10,340);
path.lineTo(70, 340);
path.lineTo(40, 290);
path.close();
canvas.drawPath(path,paint2); }
}
<!--在res/layout/activity_main.xml中-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.chen.android.test.MainActivity"> <com.chen.android.test.TestView
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>

5.Shader类

作用:类似<graient>标签,用来进行渐变变换的

Shader.TileMode有3种参数:1.CLAMP的作用是如果渲染器超出原始边界范围,则会复制边缘颜色对超出范围的区域进行着色。

2.REPEAT的作用是在横向和纵向上以平铺的形式重复渲染位图。

3.MIRROR的作用是在横向和纵向上以镜像的方式重复渲染位图。

子类:LinearGradient(线性渲染)、ComposeShader(混合渲染)、RadialGradient(环形渲染)、SweepGradient(梯度渲染)

现在还不理解怎么使用(参考资料):http://www.cnblogs.com/menlsh/archive/2012/12/09/2810372.html

Canvas、Paint、的简单使用及辅助类(Path、Shader、简介)的更多相关文章

  1. 图形绘制 Canvas Paint Path 详解

    图形绘制简介        Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0.大部分2D使用的api都在android.grap ...

  2. android 绘图之Canvas,Paint类

    Canvas,Paint 1.在android 绘图但中经常要用到Canvas和Paint类,Canvas好比是一张画布,上面已经有你想绘制图画的轮廓了,而Paint就好比是画笔,就要给Canvas进 ...

  3. 改善用户体验,用图片的自身变化以及进度通知摆脱传统的进度条,okhttp,Canvas,Paint实现

    转载请注明出处:王亟亟的大牛之路 从最開始的白页面等待,到后来的进度条告知用户.到如今的WebBO/微信这样的先下缩略图点击才又一次下大图的方式,我们开发人员对用户感知的注意度越来越高.昨天刷微博的时 ...

  4. Canvas 知识体系简单总结

    Canvas 知识体系简单总结 标签(空格分隔): HTML5 Canvas 本文原创,如需转载,请注明出处 前言 知识点零零散散,一个上午整理了一下,内容不多,方便记忆. 本文不是教程,如需教程移步 ...

  5. html5 canvas 实现一个简单的叮当猫头部

    原文:html5 canvas 实现一个简单的叮当猫头部 html5的canvas是很强大的,今天也是温习了一下之前的基础知识,然后学着做了一个简单的小案例.虽然在这一块几乎空白,但还是乐于尝试... ...

  6. JAVA nio 2 和 Path 类简介

    想要初步了解 NIO.2 API,也就是通常所说的“JSR203: More New I/O APIs for the Java Platform”,最好的切入点就是新的抽象类 java.nio.fi ...

  7. 【Bugly干货分享】一起用 HTML5 Canvas 做一个简单又骚气的粒子引擎

    Bugly 技术干货系列内容主要涉及移动开发方向,是由Bugly邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 前言 好吧,说是“粒子引擎”还是大言不 ...

  8. 一起用HTML5 canvas做一个简单又骚气的粒子引擎

    前言 好吧,说是"粒子引擎"还是大言不惭而标题党了,离真正的粒子引擎还有点远.废话少说,先看demo 本文将教会你做一个简单的canvas粒子制造器(下称引擎). 世界观 这个简单 ...

  9. canvas滤镜之简单的取反

    自己学习了一下canvas滤镜 编写一个简单的小界面,嘿嘿! 注释都在里面啦啦啦,感兴趣的来瞅瞅哦

随机推荐

  1. linux学习笔记之硬盘分区

    引用:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/03/2997098.html PS:本文仅对知识点作总结.详情请参考原文. 首先 ...

  2. C与C++

    有幸在某网站发现这篇文章,读罢,觉得蛮有道理,发来大家一起共勉之! 总是被同学们问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复. 一家之言,欢迎拍砖哈. 1.可以考虑先学 ...

  3. Go语言中怎样判断数据类型_不懂的木匠_新浪博客

    要判断数据类型,可以用Go的空接口: 建一个函数t 设置参数i 的类型为空接口,空接口可以接受任何数据类型 func t(i interface{}) {  //函数t有一个参数i  switch i ...

  4. jQuery工具函数上

    1.字符串操作 <!DOCTYPE html> <html> <head lang="en"> <meta charset="U ...

  5. [汇编语言]-第九章 在屏幕中间分别显示绿底红色,白底蓝色字符串"welcome to masm!"

    ;在屏幕中间分别显示绿色,绿底红色,白底蓝色字符串"welcome to masm!" assume cs:codesg,ds:datasg,ss:stacksg datasg s ...

  6. CodeForces 187A Permutations

    反向思维,先求数组中不用处理的元素个数,再用n减去这个数,得到结果. #include <iostream> #include <cstring> #define maxn 2 ...

  7. 循环-10. 求序列前N项和*

    /* * Main.c * C10-循环-10. 求序列前N项和 * Created on: 2014年7月30日 * Author: Boomkeeper *******部分通过******* */ ...

  8. MS SQL 小总结

    1.获取当前数据库下所有的表名称: Use 你的数据库 select Name from sysobjects where xtype='U' 2.获取当前表下的列名: select name fro ...

  9. 新建Android项目的时候,选择SDK的区别

    选择新建一个Android项目时候,出现MiniMum Required SDK.Target SDK.Compile With.Theme,如下所示,分别是什么意思呢? MinMum Require ...

  10. codevs1040 统计单词个数

    题目描述 Description 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份(1<k<= ...