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

曲靖做网站/搜索引擎优化排名品牌

曲靖做网站,搜索引擎优化排名品牌,wordpress主题 域名限制,免费网站优化工具Path是绘制复杂图形的关键,除了常规之外图形都是由Path绘制Path Api绘制线void lineTo(float x, float y)void rLineTo(float dx, float dy)lineTo 例类型rLineTo 例为什么呢?第三个点呢,为什么不跟之前的点连成一片?点void moveT…

Path是绘制复杂图形的关键,除了常规之外图形都是由Path绘制

  • Path Api
    • 绘制
    • 线
      • void lineTo(float x, float y)
      • void rLineTo(float dx, float dy)
      • lineTo 例
      • 类型
      • rLineTo 例
        • 为什么呢?第三个点呢,为什么不跟之前的点连成一片?
      • void moveTo(float x, float y)
      • void rMoveTo(float dx, float dy)
      • void setLastPoint(float dx, float dy)
      • void addCircle(float x, float y, float radius, @NonNull Direction dir)
    • 椭圆
      • void addOval(float left, float top, float right, float bottom, @NonNull Direction dir)
      • void addOval(@NonNull RectF oval, @NonNull Direction dir)
    • 矩形
      • void addRect(float left, float top, float right, float bottom, @NonNull Direction dir)
      • void addRect(@NonNull RectF rect, @NonNull Direction dir)
    • 圆角矩形
      • void addRoundRect(float left, float top, float right, float bottom, float rx, float ry,@NonNull Direction dir)
      • void addRoundRect(@NonNull RectF rect, float rx, float ry, @NonNull Direction dir)
      • void addRoundRect(float left, float top, float right, float bottom,@NonNull float[] radii, @NonNull Direction dir)
      • void addRoundRect(@NonNull RectF rect, @NonNull float[] radii, @NonNull Direction dir)
      • void addArc(float left, float top, float right, float bottom, float startAngle,float sweepAngle)
      • void addArc(@NonNull RectF oval, float startAngle, float sweepAngle)
      • void arcTo(@NonNull RectF oval, float startAngle, float sweepAngle)
      • void arcTo(@NonNull RectF oval, float startAngle, float sweepAngle,boolean forceMoveTo)
      • void arcTo(float left, float top, float right, float bottom, float startAngle,float sweepAngle, boolean forceMoveTo)
    • 闭合
    • 在路径上绘制字
      • void drawTextOnPath(@NonNull char[] text, int index, int count, @NonNull Path path,float hOffset, float vOffset, @NonNull Paint paint)
      • void drawTextOnPath(@NonNull String text, @NonNull Path path, float hOffset,float vOffset, @NonNull Paint paint)

Path Api

绘制

canvas.drawPath(path, paint);//绘制路径canvas.drawTextOnPath() //用于作为参数,绘制字

线

void lineTo(float x, float y)

@params x 以原点(0,0)为中心点,水平偏移x
@params y 以原点(0,0)为中心点,水平偏移y

用途:将坐标点(x,y)加入到 path 中,绘制的时候,会取出path中最后一个点。绘制到当前坐标(x,y)点。

void rLineTo(float dx, float dy)

@params dx 以path中的最后一个点为中心点,水平偏移dx距离
@params dy 以path中的最后一个点为中心点,竖直偏移dy距离

用途:以path中的最后一个点为中心点,找到位置(dx,dy)的坐标点,两点绘制线;需要注意的是我们的中心点是以path中的最后一个点为中心点,所以如果path的最后一个点是(x,y),那么我们的坐标点(dx,dy)的位置实际相对于(0,0)的初始坐标点的偏移量是:
x偏移 = dx + x ; y偏移 = dy + y .

lineTo 例

                Path path2 = new Path();path2.lineTo(50, 100);path2.lineTo(200, 200);canvas.drawPath(path2, paintText);

画笔类型是:paintText.setStyle(Paint.Style.STROKE); 描边
如果把画笔类型改成填充:paintText.setStyle(Paint.Style.FILL); ,绘制效果将会发生变化:


类型 FILL_AND_STROKE

类型

  1. paint.setStyle(Paint.Style.STROKE); 描边

  2. paint.setStyle(Paint.Style.FILL); 填充

  3. paint.setStyle(Paint.Style.FILL_AND_STROKE); 不关注~

rLineTo 例

                Path path2 = new Path();path2.lineTo(50, 100);path2.lineTo(200, 200);path2.rLineTo(200, 200);canvas.drawPath(path2, paintText);

修改画笔效果为填充后,效果:

为什么呢?第三个点呢,为什么不跟之前的点连成一片?

答:因为之前的点是以(0,0)为中心点;而我们第三个点的中心点是path的最后一个点,所以呢,中心点不一致,是不会有填充效果的哦。

类型 FILL_AND_STROKE

void moveTo(float x, float y)

@params x 以原点(0,0)为中心点,水平偏移x
@params y 以原点(0,0)为中心点,水平偏移y

用途:移动坐标点到坐标(x,y)的位置

void rMoveTo(float dx, float dy)

@params dx 以path中的最后一个点为中心点,水平偏移dx距离
@params dy 以path中的最后一个点为中心点,竖直偏移dy距离

用途:移动坐标点到坐标(dx,dy)的位置,需要注意的是我们的中心点是以path中的最后一个点为中心点,所以如果path的最后一个点是(x,y),那么我们的坐标点(dx,dy)的位置实际相对于(0,0)的初始坐标点的偏移量是:
x偏移 = dx + x ; y偏移 = dy + y .

void setLastPoint(float dx, float dy)

@params dx 以原点(0,0)为中心点,水平偏移dx距离
@params dy 以原点(0,0)为中心点,竖直偏移dy距离

作用:替换path上一步操作的坐标点

如果上一步操作是 lineTo,setLastPoint(float dx, float dy)中的dx,dy会替换 lineTo中的原坐标,上一步操作就会变成lineTo(float dx, float dy)的结合,如下:


                Path path2 = new Path();path2.lineTo(50, 100);path2.lineTo(200, 200);path2.setLastPoint(100,200);

可以看到坐标点(200, 200)并没有被画到画布中,最后一个坐标点变成了(100,200)。

如果上一步操作是 moveTo,setLastPoint(float dx, float dy)中的dx,dy会替换 moveTo中的原坐标,上一步操作就会变成moveTo(float dx, float dy)的结合,如下:

                Path path2 = new Path();path2.lineTo(50, 100);path2.moveTo(200, 200);path2.setLastPoint(100,200);path2.lineTo(300,300);canvas.drawPath(path2, paintText);

这里的代码和上面相比做了两步修改,可以看到我们的moveTo的操作确实是,确实是没有到(200, 200)点,而是到了(100,200),因为我多添加的一步操作,证实了这点。

void addCircle(float x, float y, float radius, @NonNull Direction dir)

@params x 以原点(0,0)为中心点,圆心的x轴方向偏移量
@params y 以原点(0,0)为中心点,圆心的y轴方向偏移量
@params radius 半径
@params Direction dir Path.Direction.CCW 沿逆时针方向绘制;Path.Direction.CW 沿顺时针方向绘制。

椭圆

void addOval(float left, float top, float right, float bottom, @NonNull Direction dir)

@params left
@params top
@params right
@params bottom
@params Direction dir Path.Direction.CCW 沿逆时针方向绘制;Path.Direction.CW 沿顺时针方向绘制。

void addOval(@NonNull RectF oval, @NonNull Direction dir)

@params oval 包含椭圆的上下左右信息
@params Direction dir Path.Direction.CCW 沿逆时针方向绘制;Path.Direction.CW 沿顺时针方向绘制。

                Path path23 = new Path();path23.addCircle(300, 300, 50, Path.Direction.CW);path23.addOval(50, 200, 350, 400, Path.Direction.CW);RectF rectF1 = new RectF(50, 400, 350, 600);path23.addOval(rectF1, Path.Direction.CW);canvas.drawPath(path23, paintText);

矩形

void addRect(float left, float top, float right, float bottom, @NonNull Direction dir)

@params left
@params top
@params right
@params bottom
@params Direction dir Path.Direction.CCW 沿逆时针方向绘制;Path.Direction.CW 沿顺时针方向绘制。

void addRect(@NonNull RectF rect, @NonNull Direction dir)

@params rect 包含椭圆的上下左右信息
@params Direction dir Path.Direction.CCW 沿逆时针方向绘制;Path.Direction.CW 沿顺时针方向绘制。

圆角矩形

void addRoundRect(float left, float top, float right, float bottom, float rx, float ry,@NonNull Direction dir)

@params left
@params top
@params right
@params bottom
@params rx 椭圆圆角的横轴半径
@params ry 椭圆圆角的纵轴半径
@params Direction dir Path.Direction.CCW 沿逆时针方向绘制;Path.Direction.CW 沿顺时针方向绘制。

void addRoundRect(@NonNull RectF rect, float rx, float ry, @NonNull Direction dir)

@params rect
@params rx 椭圆圆角的横轴半径
@params ry 椭圆圆角的纵轴半径
@params Direction dir Path.Direction.CCW 沿逆时针方向绘制;Path.Direction.CW 沿顺时针方向绘制。

void addRoundRect(float left, float top, float right, float bottom,@NonNull float[] radii, @NonNull Direction dir)

@params left
@params top
@params right
@params bottom
@params radii 矩形四个椭圆圆角的横轴半径和纵轴半径的数组,一共8个数值,依次为左上角,右上角,右下角,左下角的rx,ry
@params Direction dir Path.Direction.CCW 沿逆时针方向绘制;Path.Direction.CW 沿顺时针方向绘制。

void addRoundRect(@NonNull RectF rect, @NonNull float[] radii, @NonNull Direction dir)

@params rect
@params radii 矩形四个椭圆圆角的横轴半径和纵轴半径的数组,一共8个数值,依次为左上角,右上角,右下角,左下角的rx,ry
@params Direction dir Path.Direction.CCW 沿逆时针方向绘制;Path.Direction.CW 沿顺时针方向绘制。

                paintText.setStyle(Paint.Style.STROKE);Path path234 = new Path();RectF rectF2 = new RectF(50, 200, 350, 400);path234.addRect(rectF2, Path.Direction.CW);RectF rectF22 = new RectF(50, 450, 350, 650);path234.addRoundRect(rectF22,50,10, Path.Direction.CW);canvas.drawPath(path234, paintText);

void addArc(float left, float top, float right, float bottom, float startAngle,float sweepAngle)

@params left 规定区域
@params top 规定区域
@params right 规定区域
@params bottom 规定区域
@params startAngle 起始角度
@params sweepAngle 旋转角度,旋转角度为正,会顺时针绘制;旋转角度为负,会逆时针绘制。

void addArc(@NonNull RectF oval, float startAngle, float sweepAngle)

@params oval 规定区域
@params startAngle 起始角度
@params sweepAngle 旋转角度,旋转角度为正,会顺时针绘制;旋转角度为负,会逆时针绘制。

                Path path1 = new Path();RectF rectF32 = new RectF(50, 200, 350, 400);path1.addArc(rectF32, 0, 320);RectF rectF322 = new RectF(50, 450, 350, 650);path1.addArc(rectF322, 320, -30);canvas.drawPath(path1, paintText);

void arcTo(@NonNull RectF oval, float startAngle, float sweepAngle)

@params oval 规定区域
@params startAngle 起始角度
@params sweepAngle 旋转角度,旋转角度为正,会顺时针绘制;旋转角度为负,会逆时针绘制。

和上面的方法void addArc(@NonNull RectF oval, float startAngle, float sweepAngle)实现效果一致

void arcTo(@NonNull RectF oval, float startAngle, float sweepAngle,boolean forceMoveTo)

@params oval 规定区域
@params startAngle 起始角度
@params sweepAngle 旋转角度,旋转角度为正,会顺时针绘制;旋转角度为负,会逆时针绘制。
@params forceMoveTo 是否强制将path最后一个点移动到圆弧起点。true是强制移动,即为不连接两个点。false则连接两个点。

                Path path1 = new Path();path1.lineTo(400,400);RectF rectF32 = new RectF(50, 200, 350, 400);path1.arcTo(rectF32,0, 320,true);canvas.drawPath(path1, paintText);

当将forceMoveTo修改成false:

void arcTo(float left, float top, float right, float bottom, float startAngle,float sweepAngle, boolean forceMoveTo)

@params left 规定区域
@params top 规定区域
@params right 规定区域
@params bottom 规定区域
@params startAngle 起始角度
@params sweepAngle 旋转角度,旋转角度为正,会顺时针绘制;旋转角度为负,会逆时针绘制。
@params forceMoveTo 是否强制将path最后一个点移动到圆弧起点。true是强制移动,即为不连接两个点。false则连接两个点。

闭合

path.close();

用途:连接起始点和终止点,形成闭合图形

                Path path1 = new Path();path1.lineTo(400,400);RectF rectF32 = new RectF(50, 200, 350, 400);path1.arcTo(rectF32,0, 320,false);path1.close();canvas.drawPath(path1, paintText);

在上面代码中添加上,path1.close();,可以看到,我们原点(0,0)起始点和椭圆的终止点进行了直线连接,形成了闭环。
这就是它的作用。

在路径上绘制字

void drawTextOnPath(@NonNull char[] text, int index, int count, @NonNull Path path,float hOffset, float vOffset, @NonNull Paint paint)

@params char[] text 文字内容,类型是 char[] ,可以 string.toCharArray() 获取
@params index 指的是 char[] 中的起始位置,从第几个字符开始写,初始位置是0
@params count 指的是从起始位置开始,往后写,一共写几个字符,包含起始位置的字符
@params path Path可以看成复杂图形,可以代表所有
@params hOffset 沿路径添加到文本起始位置的距离
@params vOffset 上面(-)或下面(+)的距离用于定位文本的路径
@params paint 画笔

void drawTextOnPath(@NonNull String text, @NonNull Path path, float hOffset,float vOffset, @NonNull Paint paint)

@params text 文字内容
@params path Path可以看成复杂图形,可以代表所有
@params hOffset 沿路径添加到文本起始位置的距离
@params vOffset 上面(-)或下面(+)的距离用于定位文本的路径
@params paint 画笔

                Path path1 = new Path();path1.lineTo(400, 400);RectF rectF32 = new RectF(50, 200, 350, 400);path1.arcTo(rectF32, 0, 320, false);canvas.drawPath(path1, paintText);canvas.drawTextOnPath("ahahhahaha,so ku a !", path1, 50, 50, paintText);
http://www.jmfq.cn/news/4902481.html

相关文章:

  • 注册公司网上申请入口网站/好的营销网站设计公司
  • 优质网站建设服务/高质量关键词搜索排名
  • PPT做音乐网站介绍/怎样注册自己的网站
  • 优秀网站网址/网络营销做得比较成功的案例
  • wordpress站点备份/济宁seo推广
  • 全国疫情最新消息地图分布/广州网站优化公司
  • 电商就业前景/河南新站关键词排名优化外包
  • 西安网站建设公司哪有/代理怎么引流推广
  • 建设网站需要专业/网站建设的基本
  • 建设工程招标网官网/网页优化怎么做
  • 个人网站做淘客/百度sem代运营
  • 为什么访问外国网站速度慢/百度推广开户费用
  • 做短视频必备的网站/个人发布信息免费推广平台
  • 做现金贷的网站有哪些/效果最好的推广软件
  • 个人微信注册网站/网站推荐
  • 常州哪有做网站/友情链接举例
  • 做爰免费视频网站/中国互联网公司排名
  • 中国移动官方网站登录入口/网站排名seo
  • seo1现在怎么看不了/南京关键词seo公司
  • 深圳网站建设优化服务/提升关键词
  • 如何投诉网站制作公司/苏州百度搜索排名优化
  • 网站是用dreamer做的_为什么后台能进去前台进不去了/杭州网站优化效果
  • 做网站是什么鬼/怎么把网站排名排上去
  • 集团网站建设流程/产品经理培训
  • 网站建设对图片有哪些要求/最近一周的国内新闻
  • 影响网站排名重要因素/网站关键词快速优化
  • wordpress插件包/朝阳区搜索优化seosem
  • 网站如何盈利/成都今天重大新闻事件
  • 重庆家居网站制作公司/天津优化公司哪家好
  • 临沂外贸网站建设/seo公司推荐推广平台