Android使用Canvas画图
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画图的更多相关文章
- android canvas 画图笔记
android canvas 画图笔记 1.PathEffect类 画虚线 Paint p = new Paint(Paint.ANTI_ALIAS_FLAG); p.setStyle(Paint.S ...
- Android开发之画图的实现
Android开发之画图的实现 四天前上完安卓的第一节课,真的是一脸懵逼,尽管熊哥说和java是差不多的,然而这个包和那个包之间的那些转换都是些什么鬼呀!!!但是四天的学习和操作下来,我觉得安卓 ...
- Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形) .
1.首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, ...
- Android之canvas详解
首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, y ...
- Android中利用画图类和线程画出闪烁的心形
本文讲解主要涉及的知识点: 1.线程控制 2.画图类 3.心形函数 大家先看图片: <ig ...
- Android之自定义画图文字动画
结构: BaseView: package com.caiduping.canvas; import android.content.Context; import android.graphics. ...
- Android利用canvas画各种图形 及Paint用法 .
引自:http://blog.csdn.net/carlfan/article/details/8139984 1.首先说一下canvas类: Class Overview The Canvas cl ...
- android学习5——画图问题
重写View中的onDraw函数可以实现画图.代码如下: @Override public void onDraw(Canvas canvas) { Paint paint = new Paint() ...
- html5 canvas 画图移动端出现锯齿毛边的解决方法
使用HTML5的canvas元素画出来的.在移动端手机上测试都发现画图有一点锯齿问题 出现这个问题的原因应该是手机的宽是720像素的, 而这个canvas是按照小于720像素画出来的, 所以在720像 ...
随机推荐
- 从JVM的角度解析String
1. 字符串生成过程 我们都知道String s = "hello java";会将“hello java”放入字符串常量池,但是从jvm的角度来看字符串和三个常量池有关,clas ...
- RHEL6 64位ASM方式安装oracle 11gR2(一)
本文转载自 http://vnimos.blog.51cto.com/2014866/1221361 一.安装前的准备 1.1 确定操作系统环境 1 2 3 4 5 6 7 8 9 10 11 12 ...
- Navicat设定mysql定时任务步骤示例
怎样在Navicat中设置,是数据库按照记录中的日期更新状态字段 其实这个很常用,比如你网站里的某条记录的日期——比如说数据库中某条活动记录的审核日期字段已经过期,亦即当前时间已经超过审核日期,那么定 ...
- Effective java笔记3--类和接口1
一.使类和成员的可访问能力最小化 要想区别一个设计良好的模块与一个设计不好的模块,最重要的因素是,这个模块对于外部的其他模块而言,是否隐藏了内部的数据和其他的实现细节.一个设计良好的模块会隐藏所有的实 ...
- Java-Maven-Runoob:Maven 仓库
ylbtech-Java-Maven-Runoob:Maven 仓库 1.返回顶部 1. Maven 仓库 在 Maven 的术语中,仓库是一个位置(place). Maven 仓库是项目中依赖的第三 ...
- 第七章 JVM体系结构与工作方式
JVM能跨计算机体系结构来执行Java字节码,主要是由于JVM屏蔽了与各个计算机平台的软件和硬件之间的差异. 7.1 JVM体系结构 7.1.1 何谓JVM 模拟一个计算机来达到一个计算机所具有的计算 ...
- vsftpd设置被动模式
完整配置 listen=yes listen_port= max_clients= max_per_ip= local_max_rate= anonymous_enable=no local_enab ...
- 第十五章 MySQL日志(待续)
·······
- 第五章 bean的加载(待续)
·············
- Java微信公众平台开发(五)--文本及图文消息回复的实现
转自:http://www.cuiyongzhi.com/post/43.html 上篇我们说到回复消息可以根据是否需要上传文件到微信服务器可划分为[普通消息]和[多媒体消息],这里我们来讲述普通消息 ...