2017-04-18 1385 views

回答

3

我想你可以通過繪製三行部分重疊解決此:

  • 兩個外部線路用Paint.Cap.ROUND
  • 一個內符合​​3210

假設你的輸入數據是

float lineWidth = 20; 
float lineRadius = 100; 
float cornerRadius = 2; 

你去如下,

float width, radius; 
// Draw outer lines 
paint.setStrokeCap(Paint.Cap.ROUND); 
width = cornerRadius * 2; 

// Draw inner 
radius = lineRadius - lineWidth/2f + cornerRadius; 
canvas.draw(...) 

// Draw outer 
radius = lineRadius + lineWidth/2f - cornerRadius; 
canvas.draw(...) 

// Draw center 
paint.setStrokeCap(Paint.Cap.BUTT); 
width = lineWidth - 2f*cornerRadius; 
radius = lineRadius; 
canvas.draw(...) 

您可能需要稍微改變爲中心線弧角(必須是cornerRadius長,兩側各一個),但是這很容易。

+0

在這個例子中'width'基本上是筆畫寬度,'radius'是從圓心到每一行中間的距離。我不知道'Canvas'作爲輸入是什麼,但這應該很容易修改。 – natario