2012-01-01 126 views
4

我试图绘制的内容如下:Screenshot但在箭头的中心使用加号而不是减号。使用android.graphics.Path从另一个形状中删除一个形状

我想从白底形状中减去'减号'。奇怪的是,减号工作正常,但如果我画一个加号,而不是减去它,但将其添加到底层路径。

我减去负的代码如下所示

Path base = new Path(); 
[... draw the arrow ] 

Path subtract = new Path(); 
subtract.moveTo(-xBarWidth/2, -xBarHeight/2); // center the path 
subtract.rLineTo(xBarWidth, 0); 
subtract.rLineTo(0, xBarHeight); 
subtract.rLineTo(-xBarWidth, 0); 
subtract.rLineTo(0, -xBarHeight); 

base.add(subtract); 

[in paint() function: canvas.draw(base, paint)] 

为加号代码:

int halfBarWidth = xBarWidth/2; 
subtract.moveTo(-halfBarWidth, -xBarHeight/2); 
subtract.rLineTo(halfBarWidth, 0); 
subtract.rLineTo(0, halfBarWidth); 
subtract.rLineTo(xBarHeight, 0); 
subtract.rLineTo(0, -halfBarWidth); 
subtract.rLineTo(halfBarWidth, 0); 
subtract.rLineTo(0, -xBarHeight); 
subtract.rLineTo(-halfBarWidth, 0); 
subtract.rLineTo(0, -halfBarWidth); 
subtract.rLineTo(-xBarHeight, 0); 
subtract.rLineTo(0, halfBarWidth); 
subtract.rLineTo(-halfBarWidth, 0); 
subtract.rLineTo(0, xBarHeight); 

然而,现在它画一个白色再加上箭头的顶端。我试过subtract.setFillType(FillType.INVERSE_EVEN_ODD)但它没有改变任何东西。

不幸的是我在api中找不到任何帮助。

回答

5

也许这将帮助别人:我必须设置基地的fillType到EVEN_ODD

base.setFillType(FillType.EVEN_ODD); 
+1

你能解释为什么这个工作? – SlashG 2016-11-02 06:48:41

相关问题