• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android Canvas之Path操作

Android Canvas之Path操作

作者:万物weiyi 字体:[增加 减小] 来源:互联网 时间:2017-07-23

万物weiyi通过本文主要向大家介绍了Android,Canvas等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

接上篇,Android自定义View工具:Paint&Canvas(二)

 

上一篇中介绍的Canvas绘制图形只能画一些常规图形(圆,椭圆,矩形等),如果想绘制更复杂的图形,Path神器来了!

Path是什么?
Path类将多种复合路径(多个轮廓,如直线段、二次曲线、立方曲线)封装在其内部的几何路径。

如何绘制Path:
通过设置Paint的Style(FILL、STROKE、FILL_AND_STROKE),然后调用canvas.drawPath(path, paint);Path还可以用于剪切或者在路径上绘制文本(canvas.drawTextOnPath())。

Path有两个构造函数:

Path() // 空的构造函数
Path(Path src) //创建一个新的路径,并且从src路径里赋值内容

 

Path常用方法一览表:

 

Path常用方法 备注
线操作  
lineTo、rLineTo 绘制线
点操作  
moveTo、rMoveTo 改变后面操作的起始点位置
setLastPoint 改变前面操作中最后点的位置
添加常规图形  
addRect 绘制矩形
addRoundRect 绘制圆角矩形
addCircle 绘制圆
addOval 绘制椭圆
addArc、arcTo 绘制圆弧
闭合path  
close 如果连接Path起点和终点能形成一个闭合图形,则会将起点和终点连接起来形成一个闭合图形
贝塞尔曲线  
quadTo、rQuadTo、cubicTo、rCubicTo 贝塞尔曲线
  • 线操作
lineTo(float x, float y) //添加当前点到目标点(x,y)构成的直线到path
rLineTo(float dx, float dy) //基于当前坐标系,即以path最后的那个点
//为坐标系原点(0,0),如果前面没有path的点,默认是屏幕左上角(0,0).


注:lineTo、rLineTo起始点默认是屏幕左上角的坐标系原点(0,0)!
示例:

 

 

 

//设置Paint
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(10f);
//设置Path
Path path = new Path();
//屏幕左上角(0,0)到(200,400)画一条直线
path.lineTo(200, 400);
//(200, 400)到(400,600)画一条直线
path.lineTo(400, 600);
//以(400,600)为起始点(0,0)偏移量为(400,600)画一条直线,
//其终点坐标实际在屏幕的位置为(800,1200)
path.rLineTo(400, 600);
canvas.drawPath(path, mPaint);


效果图:

 

 

 

                                                  

 

 

  • 点操作
moveTo(float x, float y) //改变接下来操作的起点位置为(x,y)
rMoveTo(float dx, float dy) //接下来要操作的起点位置为(x+dx,y+dy)
setLastPoint(float dx, float dy) //改变前一步操作点的位置,会改变前一步的操作


先来看moveTo和rMoveTo的区别,示例:

 

 

 

 

//初始化Paint
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(10f);
//初始化Path
Path path = new Path();
//将坐标系原点从(0,0)移动到(100,100)
path.moveTo(100, 100);
//画从(100,100)到(400,400)之间的直线
path.lineTo(400, 400);
//path.rMoveTo(0, 100); //暂时注释
path.lineTo(400, 800);
canvas.drawPath(path, mPaint);


效果图:

 

 

 

                                                                       

上面代码中,打开注释的path.rMoveTo(0, 100),意为下一步操作起点位置由(400,400)变为(400+0,400+100)即为(400,500),效果图:

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android:手把手教你 实现Activity 与 Fragment 相互通信(含Demo)
  • android自定义圆角背景实现富文本标题展示
  • 自定义收集用户行为统计库 (非常方便 可以自己拓展)
  • Android 6.0 Phone"通话显示"查询流程
  • Android缓存处理
  • 自定义进度条PictureProgressBar——从开发到开源发布全过程
  • 详解Android中的SQLite数据库存储
  • Android设备上获取照片、裁剪图片、压缩图片
  • Android触摸事件分发机制完全解析《一》
  • Android-SQLite和SQLiteOpenHelper

相关文章

  • 2017-05-26Solaris IPMP两种配置方法
  • 2017-05-26应该在find命令中使用-execdir代替-exec
  • 2017-05-26违章查询源码分享,违章查询源码
  • 2017-05-26android support的作用及其常见错误的解决,androidsupport
  • 2017-05-26浅谈Kotlin(一):简介及Android Studio中配置,kotlinandroid
  • 2017-05-26Xamarin +vs2015 Android 开发GPS loaction 返回 null 小结,xamarinvs2015
  • 2017-05-26Android中使用ViewPager实现屏幕页面切换和页面轮播效果,androidviewpager
  • 2017-05-26Android开发学习-view,android开发-view
  • 2017-05-269套Android实战经典项目资料分享给大家,9套android
  • 2017-05-26Android开发找工作之前先看看这些知识点吧

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • nagios二次开发之“依据分组绘制服务图”
    • Android 手机卫士--确认密码对话框编写,android确认密码
    • HBase Thrift2 CPU过高问题分析
    • Android 手把手带你玩转自定义相机
    • Android零散,零散钟点工
    • onSaveInstanceState和onRestoreInstanceState触发的时机,onsaveinstancestate
    • 多选按钮(CheckBox),多选按钮checkbox
    • Android Studio混淆打包错误
    • 安卓第十五天笔记-图形图像一些简单处理,安卓第图形图像
    • MirrorNetwork 基于jmdns和netty的android网络通信开源库,mirrornetworkjmdns

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有