1.参考:http://blog.csdn.net/rhljiayou/article/details/7212620/

2.常用方法:

  1.Canvas类

drawArc 绘制弧

drawBitmap 绘制位图

drawCircle 绘制圆形

drawLine 绘制线

drawOval 绘制椭圆

drawPath 绘制路径

drawPoint 绘制一个点

drawPoints 绘制多个点

drawRect 绘制矩形

drawRoundRect 绘制圆角矩形

drawText 绘制字符串

drawTextOnPath 沿着路径绘制字符串

  2.Paint类:

setARGB/setColor 设置颜色

setAlpha 设置透明度

setAntiAlias 设置是否抗锯齿

setShader 设置画笔的填充效果

setShadowLayer 设置阴影

setStyle 设置画笔风格

setStrokeWidth 设置空心边框的宽度

setTextSize 设置绘制文本时文字的大小

setStrokeCap(Paint.Cap.ROUND) 设置为圆角

3.代码如下:

public class DrawView extends View {

    public DrawView(Context context) {
super(context);
} public DrawView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
} @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
/*
* 方法 说明 drawRect 绘制矩形 drawCircle 绘制圆形 drawOval 绘制椭圆 drawPath 绘制任意多边形
* drawLine 绘制直线 drawPoin 绘制点
*/ //设置画笔
Paint paint=new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.STROKE); //画文本
canvas.drawText("画圆",20,30,paint);
//画圆
canvas.drawCircle(100,30,30,paint); //画线
paint.setColor(Color.BLACK);
canvas.drawText("画线及圆弧",10,80,paint);
canvas.drawLine(10,90,310,90,paint);//直线
canvas.drawLine(330,90,430,150,paint);//斜线 //画圆弧及扇形
RectF oval1=new RectF(10,160,110,260);
paint.setColor(Color.GREEN); canvas.drawArc(oval1,180,180,false,paint);
//第一个参数:范围 第二个参数:开始角度 第三个参数:圆弧度数
//第四个参数:false---圆弧 true---扇形
//第五个参数:画笔 oval1.set( 120,160,220,260);
canvas.drawArc(oval1,20,60,true,paint); oval1.set(230,160,330,260);
canvas.drawArc(oval1,200,240,true,paint); //画矩形
paint.setColor(Color.BLUE);
canvas.drawRect(10,280,210,380,paint); //绘制圆角矩形
RectF re1=new RectF(250,280,450,380);
canvas.drawRoundRect(re1,15,15,paint); //画椭圆
RectF re2=new RectF(10,400,210,500);
canvas.drawOval(re2, paint); //画三角形
paint.setColor(Color.DKGRAY);
Path path=new Path();
path.moveTo(70,520);
path.lineTo(10,580);
path.lineTo(130,580);
path.close();
canvas.drawPath(path,paint); //画点
paint.setStyle(Paint.Style.FILL);
canvas.drawPoint(10,600,paint);//一个点
canvas.drawPoints(new float[]{20,600,30,600,40,600},paint);//多个点 //画贝塞尔曲线
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.RED);
Path path1=new Path();
path1.moveTo(100,620);
path1.quadTo(150,550,170,700);
canvas.drawPath(path1,paint); //画图片
Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.drawable.pic6);
// canvas.drawBitmap(bitmap,100,610,paint);//不限定图片大小 只指定左上角坐标
RectF rectF=new RectF(100,710,400,1010);
canvas.drawBitmap(bitmap,null,rectF,paint);//限定图片显示范围 //-----------------设置渐变后绘制------------------ //Paint设置渐变器
Shader mShader=new LinearGradient(0,0,40,60,
new int[]{Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW},
null,Shader.TileMode.REPEAT);
paint.setShader(mShader);
paint.setStyle(Paint.Style.FILL);
//设置阴影
paint.setShadowLayer(45,10,10,Color.BLACK); canvas.drawRect(440,710,640,910,paint); }
}

4.效果图:

Android使用Canvas画图的更多相关文章

  1. android canvas 画图笔记

    android canvas 画图笔记 1.PathEffect类 画虚线 Paint p = new Paint(Paint.ANTI_ALIAS_FLAG); p.setStyle(Paint.S ...

  2. Android开发之画图的实现

    Android开发之画图的实现    四天前上完安卓的第一节课,真的是一脸懵逼,尽管熊哥说和java是差不多的,然而这个包和那个包之间的那些转换都是些什么鬼呀!!!但是四天的学习和操作下来,我觉得安卓 ...

  3. Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形) .

    1.首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, ...

  4. Android之canvas详解

    首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, y ...

  5. Android中利用画图类和线程画出闪烁的心形

                                                        本文讲解主要涉及的知识点: 1.线程控制 2.画图类 3.心形函数 大家先看图片: <ig ...

  6. Android之自定义画图文字动画

    结构: BaseView: package com.caiduping.canvas; import android.content.Context; import android.graphics. ...

  7. Android利用canvas画各种图形 及Paint用法 .

    引自:http://blog.csdn.net/carlfan/article/details/8139984 1.首先说一下canvas类: Class Overview The Canvas cl ...

  8. android学习5——画图问题

    重写View中的onDraw函数可以实现画图.代码如下: @Override public void onDraw(Canvas canvas) { Paint paint = new Paint() ...

  9. html5 canvas 画图移动端出现锯齿毛边的解决方法

    使用HTML5的canvas元素画出来的.在移动端手机上测试都发现画图有一点锯齿问题 出现这个问题的原因应该是手机的宽是720像素的, 而这个canvas是按照小于720像素画出来的, 所以在720像 ...

随机推荐

  1. 1020. Tree Traversals (25) ——树的遍历

    //题目 通过后续遍历 中序遍历 得出一棵树 ,然后按树的层次遍历打印 PS:以前对于这种用指针的题目是比较头痛的,现在做了一些链表操作后,感觉也不难 先通过后续中序建一棵树,然后通过BFS遍历这棵树 ...

  2. Linux常用命令(个人使用频率较高)

    1,日志查看 tail(cat) -f|grep ERROR(任意字符) filepath (任意行数) -f|grep ERROR(任意字符) filepath 2,查看目录&授权 file ...

  3. bootstrapSwitch 使用

    1.bootstrapSwitch 默认选项,加上checked表示true,不加表示false <input type="checkbox" id="" ...

  4. cors,跨域资源共享,Java配置

    一.概念 1. 如果两个页面的协议.域名和端口是完全相同的,那么它们就是同源的,不同则为跨域 2. ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允 ...

  5. selenium 定位元素可以用多个findElement

    selenium 定位元素可以用多个findElement,如driver.findElement(By.id"XXX").findElement(By.linkText(XXX) ...

  6. FTP文件传输协议两种模式 ftp协议集,错误码集,ftp客户端命令集

    TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20.FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置.联接的方式.甚至是是否使用相同的操 ...

  7. NOIP2008普及组第3题 传球游戏

    NOIP2008普及组第3题 传球游戏 时间限制: 1 Sec  内存限制: 128 MB提交: 29  解决: 16[提交][状态][讨论版][命题人:外部导入] 题目描述 上体育课的时候,小蛮的老 ...

  8. linux 下 进程和线程的区别

    1.进程与线程 进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集.从内核的观点看,进程的目的就是担当分配系统资源(CPU时间.内存等)的基本单位. 线程是进程的一个执行流,是C ...

  9. 参数传递中编码问题(Get/Post 方式)(二)

    form有2中方法把数据提交给服务器,get 和post ,分别说下吧.(一)get 提交1.首先说下客户端(浏览器)的form表单用get 方法是如何将数据编码后提交给服务器端的吧. 对于get 方 ...

  10. PHP AST学习

    前一阵和前同事交流在检测webshell方面的相关方法,其中提出了使用lex yacc做一套语法解析来解析字节码段来判断是否存在webshell. 后来在查找相关资料中,找到了github开源的一个工 ...