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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索