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像 ...
随机推荐
- mysql实战优化之二:limit优化(大表翻页查询时) sql优化
mysql的表test中有20105119行数据.建立索引:data_status,place_cargo_status 场景1: SELECT id, resource_id, resource_t ...
- Java-Maven-Runoob:Maven 引入外部依赖
ylbtech-Java-Maven-Runoob:Maven 引入外部依赖 1.返回顶部 1. Maven 引入外部依赖 如果我们需要引入第三库文件到项目,该怎么操作呢? pom.xml 的 dep ...
- PHP base64多图片上传
// 多图片上传,base64 public function upload_multi() { $pic = $_POST['pic']; if (!$pic) { $this->json-& ...
- JSP搭建
Tomcat7已经发布多时,Tomcat7增加了对Servlet 3.0,JSP 2.2和JSP-EL 2.2的支持.支持web application内存泄露的检测和防护等很多新功能.本片教程主要介 ...
- leetcode788
public class Solution { public int RotatedDigits(int N) { ; ; i <= N; i++) { var str = i.ToString ...
- <%@ page import=""%>的用法
转自:https://blog.csdn.net/huihui870311/article/details/455642111 <jsp:directive.page import=" ...
- MySQL中SQL_CALC_FOUND_ROWS的用法
1. SQL_CALC_FOUND_ROWS简述 在很多分页的程序中都这样写: #查出符合条件的记录总数 SELECT COUNT(*) from [table] WHERE ......; #查询当 ...
- Hadoop Serialization -- hadoop序列化详解 (2)
回顾: 回顾序列化,其实原书的结构很清晰,我截图给出书中的章节结构: 序列化最主要的,最底层的是实现writable接口,wiritable规定读和写的游戏规则 (void write(DataOut ...
- MYSQL中str_to_date函数的用法
str_to_date(str,format) 函数的用法 str_to_date函数将str转化为日期型的数据,format表示转化后的格式. format参数格式: 常用: %Y 年 %m 月 ...
- HTML_基础篇
一.HTML的概述 什么是HTML? html:Hyper Test Markup Language 超文本标记语言(它不是编程语言!) 超文本:功能比普通的文本更加强大. 标记语言:使用一组标签对内 ...