Android使用Canvas画图
2024-08-26 07:32:12
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.效果图:
最新文章
- ASP.NET Core 中文文档 第四章 MVC(01)ASP.NET Core MVC 概览
- Datazen地图Chart介绍
- 全面理解Javascript闭包和闭包的几种写法及用途
- Setting up SSL for SCM-Manager with Microsoft CA and TortoiseHg
- EF Power Tools 数据库逆向生成时T4模板修改
- mac 连接mysql提示 Warning: mysqli::real_connect(): (HY000/2002): No such file or directory
- Java求职面试准备之常见算法
- 使用python发送Email
- 关于使用navigationController,前后2个视图控制器navigationBar隐藏属性不同,导致右滑手势失效问题的解决办法
- RSA算法python实现
- phpstorm + xdebug 配置
- activity的android:name所指的Activity实现类的简写问题
- 【Unity与23种设计模式】装饰模式(Decorator)
- sparkSQL catalyst
- ASP.NET MVC学习系列(4)——MVC过滤器FilterAttribute
- dbconfig.properties
- oracle 表空间,用户的创建及授权,表空间基本操作
- Kaazing Gateway简单使用
- python下载安装BeautifulSoup库
- ArcGIS 点云转DEM
热门文章
- mongodb数据操作(CRUD)
- (转)如何修正DIV float之后导致的外部容器不能撑开的问题
- HDFS之五:Hadoop 拒绝远程 9000 端口访问
- Sql server 2008 R2 正在关闭[0x80041033]
- ubuntu 14.04 no valid active connections found
- left join的多重串联与groupby
- 利用 Flask+Redis 维护 IP 代理池
- 「小程序JAVA实战」小程序视图之细说数据绑定(13)
- 结合spring 实现自定义注解
- 浅谈PL/SQL语言基础