android绘制虚线

有的时候咱们须要一种虚线效果,好比图片的边框,愤怒的小鸟的飞翔路径,那么怎么绘制这些虚线呢?方法不少,目前我以为好的有两种:html

1、本身建立模式,一个点一个点的绘制。android

2、用Android提供的 DashPathEffect 类来建立模式绘制。canvas

下面我要演示的就是第二种方法,用Android提供给个人API来绘制。数组

因为是开发项目的一个小块,下面只能给出部分截图:url

android <wbr>绘制虚线效果
效果如上面。spa

下面看一下核心绘图代码:.net

public void draw(Canvas mcanvas) {
  GameLog.log(Tag, "draw");htm

  Paint mLinePaint = newPaint();
  mLinePaint.setColor(Color.WHITE);
  mLinePaint.setStyle(Paint.Style.STROKE);对象

  //绘制模式
  PathEffect effect = new DashPathEffect(new float[] { 1,2, 4, 8}, 1);
  mLinePaint.setAntiAlias(true);
  mLinePaint.setPathEffect(effect);
  mLinePaint.setStrokeWidth(4);blog

 

  if (GameManager.getState()== GameManager.GameStart) {
   GameLog.log(Tag,"GameStart");
   float[]oldPts = getPts(mOldPoints);
   mCanvas.drawLines(oldPts,mLinePaint);
   prepareLinesData();
   float[]newPts = getPts(mNewPoints);
   mCanvas.drawLines(newPts,mLinePaint);
  }

}
下面是关于这个DashPathEffect 的一些说明,摘录的:

DashPathEffect是PathEffect类的一个子类,能够使paint画出相似虚线的样子,而且能够任意指定虚实的排列方式.

 

代码中的float数组,必须是偶数长度,且>=2,指定了多少长度的实线以后再画多少长度的空白.

如本代码中,绘制长度1的实线,再绘制长度2的空白,再绘制长度4的实线,再绘制长度8的空白,依次重复.1是偏移量,能够不用理会.

 

简单介绍下 PathEffect类:

PathEffect是用来控制绘制轮廓(线条)的方式。

PathEffect对于绘制Path基本图形特别有用,可是它们也能够应用到任何Paint中从而影响线条绘制的方式。

使用PathEffect,能够改变一个形状的边角的外观而且控制轮廓的外表。

Android包含了多个PathEffect,包括:

CornerPathEffect 能够使用圆角来代替尖锐的角从而对基本图形的形状尖锐的边角进行平滑。

DashPathEffect 能够使用DashPathEffect来建立一个虚线的轮廓(短横线/小圆点),而不是使用实线。你还能够指定任意的虚/实线段的重复模式。

DiscretePathEffect 与DashPathEffect类似,可是添加了随机性。当绘制它的时候,须要指定每一段的长度和与原始路径的偏离度。

PathDashPathEffect 这种效果能够定义一个新的形状(路径)并将其用做原始路径的轮廓标记。

下面的效果能够在一个Paint中组合使用多个Path Effect。

SumPathEffect 顺序地在一条路径中添加两种效果,这样每一种效果均可以应用到原始路径中,并且两种结果能够结合起来。

ComposePathEffect 将两种效果组合起来应用,先使用第一种效果,而后在这种效果的基础上应用第二种效果。

对象形状的PathEffect的改变会影响到形状的区域。这就可以保证应用到相同形状的填充效果将会绘制到新的边界中。

本文同步分享在 博客“xiangzhihong8”(CSDN)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索