当前位置: 首页 > news >正文

怀化招标网站信息系统开发流程

怀化招标网站,信息系统开发流程,网站开发教程 模板,开发网站开发Path作为Android中一种相对复杂的绘图方式#xff0c;官方文档中的有些解释并不是很好理解#xff0c;这里作一个相对全面一些的总结#xff0c;供日后查看#xff0c;也分享给大家#xff0c;共同进步。 1.基本绘图方法 addArc(RectF oval, float startAngle, float swee…Path作为Android中一种相对复杂的绘图方式官方文档中的有些解释并不是很好理解这里作一个相对全面一些的总结供日后查看也分享给大家共同进步。 1.基本绘图方法 addArc(RectF oval, float startAngle, float sweepAngle)绘制弧线,配合Paint的Style可以实现不同的填充效果addCircle(float x, float y, float radius, Path.Direction dir)绘制圆形,其中第dir参数用来指定绘制时是顺时针还是逆时针addOval(RectF oval, Path.Direction dir)绘制椭圆形其中 oval作为椭圆的外切矩形区域addRect(RectF rect, Path.Direction dir)绘制矩形addRoundRect(RectF rect, float rx, float ry, Path.Direction dir)绘制圆角矩形lineTo(float x, float y)绘制直线addPath(Path src)添加一个新的Path到当前PatharcTo(RectF oval, float startAngle, float sweepAngle, boolean forceMoveTo)与addArc方法相似但也有区别下文细述。quadTo(float x1, float y1, float x2, float y2)绘制二次贝塞尔曲线,其中 (x1,y1)为控制点(x2,y2)为终点cubicTo(float x1, float y1, float x2, float y2, float x3, float y3)绘制三次贝塞尔曲线其中(x1,y1),(x2,y2)为控制点(x3,y3)为终点2.rXXX方法 上面的lineTo,MoveTo,QuadTo,CubicTo方法都有与之对应的rXXX方法 rLineTo(float dx, float dy)rMoveTo(float dx, float dy)rQuadTo(float dx1, float dy1, float dx2, float dy2)rCubicTo(float x1, float y1, float x2, float y2, float x3, float y3)这些方法与之对应的原方法相比惟一的区别在于r方法是基于当前绘制开始点的offest,比如当前paint位于 (100,100)处则使用rLineTo(100,100)方法绘制出来的直线是从(100,100)到(200,200)的一条直接由此可见rXXX方法方便用来基于之前的绘制作连续绘制。 3.Path.op方法 1234 //原型op(Path path, Path.Op op)//egpath1.op(path2,Path.Op.DIFFERENCE); 此方法用于对两个Path对象做相应的运算组合(combine),具体的说是根据不同的op参数及path2参数来影响path1对象有点类似于数学上的集合运算。请看下面的例子 123456 Path path1 new Path();path1.addCircle(150, 150, 100, Path.Direction.CW);Path path2 new Path();path2.addCircle(200, 200, 100, Path.Direction.CW);path1.op(path2, Path.Op.DIFFERENCE);canvas.drawPath(path1, paint1); 效果如下:通过不断修改path1.op的第二个参数依次可以得到如下效果: Path.Op.INTERSECT效果Path.Op.UNION效果Path.Op.REVERSE_DIFFERENCE效果Path.Op.XOR效果 总结: Path.Op.DIFFERENCE 减去path1中path1与path2都存在的部分;path1 (path1 - path1 ∩ path2)Path.Op.INTERSECT 保留path1与path2共同的部分;path1 path1 ∩ path2Path.Op.UNION 取path1与path2的并集;path1 path1 ∪ path2Path.Op.REVERSE_DIFFERENCE 与DIFFERENCE刚好相反;path1 path2 - (path1 ∩ path2)Path.Op.XOR 与INTERSECT刚好相反;path1 (path1 ∪ path2) - (path1 ∩ path2)4.setFillType 设置path的填充模式.网上关于path的FillType的介绍很少实际上在官方ApiDemos里就有个很好的例子: 123456789101112131415161718192021222324252627282930313233343536373839404142 /** * Created by ghui on 10/25/15. */public class PathFillTypeView extends View { private Paint mPaint new Paint(Paint.ANTI_ALIAS_FLAG); private Path mPath; public PathFillTypeView(Context context) { super(context); setFocusable(true); setFocusableInTouchMode(true); mPath new Path(); mPath.addCircle(40, 40, 45, Path.Direction.CCW); mPath.addCircle(80, 80, 45, Path.Direction.CCW); mPath.addCircle(120, 120, 45, Path.Direction.CCW); } private void showPath(Canvas canvas, int x, int y, Path.FillType ft, Paint paint) { canvas.save(); canvas.translate(x, y); canvas.clipRect(0, 0, 160, 160); canvas.drawColor(Color.WHITE); mPath.setFillType(ft); canvas.drawPath(mPath, paint); canvas.restore(); } Override protected void onDraw(Canvas canvas) { Paint paint mPaint; paint.setColor(Color.RED); canvas.drawColor(0xFFCCCCCC); canvas.translate(20, 20); paint.setAntiAlias(true); showPath(canvas, 0, 0, Path.FillType.WINDING, paint); showPath(canvas, 160 * 2, 0, Path.FillType.EVEN_ODD, paint); showPath(canvas, 0, 160 * 2, Path.FillType.INVERSE_WINDING, paint); showPath(canvas, 160 * 2, 160 * 2, Path.FillType.INVERSE_EVEN_ODD, paint); }} 效果如下:(上面的例子在官方ApiDemo的基础上做了适当的修改) 总结: 所谓填充指的就是填充内部setFillType就是用来界定哪里算内部的算法。在计算机图形学中界定一个点是不是在多边形内部有两种算法: 非零环绕数规则(Nonzero-rule)奇偶规则(Even–odd rule)关于这两种算法这里不作详细介绍具体可以参考上面的维基链接或者这篇中文资料(注意看评论区) 5.易混淆的方法 1. addArc 与 arcTo 前者指定在某处画一条弧线仅此而已不会受当前paint的位置所影响。而arcTo方法有两种形式: arcTo(RectF oval, float startAngle, float sweepAngle, boolean forceMoveTo) arcTo(RectF oval, float startAngle, float sweepAngle) 对于第一种形式的方法若forceMoveTo参数为false则与第二种形式的方法没区别绘制成的最终图形会受到落笔点的影响若forceMoveTo参数值为true则绘制效果与addArc方法没有区别。 12345 //代码1Path path new Path();path.moveTo(100, 100);path.addArc(200, 200, 400, 400, 0, 150);canvas.drawPath(path, paint); 代码1效果如下图: 12345 //代码2Path path new Path();path.moveTo(100, 100);path.arcTo(200, 200, 400, 400, 0, 150, false);canvas.drawPath(path,paint); 代码2效果如下图: 若将代码2中的arcTo方法的参数修改为true则绘制的效果与代码1相同。 2. reset 与 rewind reset清除path上的内容重置path到 path new Path()的初始状态。rewind清除path上的内容但会保留path上相关的数据结构以高效的复用。Detail 其它方法 moveTo(float x,float y)移动画笔到 (x,y) 处offset(float dx, float dy)平移当前path,在此path上绘制的任何图形都会受到影响close()闭合当前路径 (系统会自动从起点到终点绘制一条直线使当前路径闭合)reset()重置path,但不会重置fill-type设置rewind()重置path,但会保留内部数据结构set(Path src)设置新的Path到当前对象setLastPoint(float x,float y)设置当前path的终点transform(Matrix matrix)矩阵变换转自http://ghui.me/post/2015/11/android-graphics-path/转载于:https://www.cnblogs.com/android-blogs/p/5702695.html
http://www.yutouwan.com/news/397368/

相关文章:

  • seo网站结构如何优化阿里巴巴官网下载手机版
  • 电脑软件下载官方网站旅游网站设计风格
  • 怎么查看网站是否被百度收录做网站建设的企业
  • 模板网免费百度seo排名技术必不可少
  • 自己做网站需要服务器吗slider revolution wordpress
  • 茂名专业网站建设公司平面设计最新招聘信息
  • seo推广需要网站吗酷炫给公司网站欣赏
  • 余姚市城乡建设局网站网站后台基本功能
  • 自己动手做衣服的网站徐州公共资源建设交易平台
  • 怎么用ppt做网站企业门户网站模板
  • 3d网页游戏排行优化外包服务公司
  • 觉得自己做的网站土怎么办手机之家对比
  • 网站联系我们页面设计专业做企业网站
  • 网站设计电商运营做一个静态网站需要多少钱
  • 网站的设计与维护摘要建设银行网站点不进去了怎么办
  • 怎么做网络销售的网站logo标志设计
  • 为学校网站做网站推广策划德阳建设机械网站
  • 宜昌做网站公司有哪些网站做网站模板平台
  • 海城网站制作安卓软件开发培训
  • 沈阳想做网站自己怎么学电商运营
  • 做网站发广告洛可可设计公司待遇
  • 瓷砖 中企动力 网站建设中国外发加工网官网
  • 西宁做网站最好的公司别墅外观设计网站推荐
  • 网站建设怎么更换图片深圳企业网站建设维护
  • 广州制作网站平台wordpress大学主题修改
  • 秦皇岛城乡建设局网站logo标志
  • 学校网站设计的作用最专业的企业营销型网站建设
  • 十大ppt模板免费下载网站网站信息优化的方式
  • 公司做网站自己注册域名用wordpress建立电商网站
  • 黄冈网站推广软件费用是多少房地产集团网站建设方案