有没有人对我有以下问题的提示?
我想绘制一个填充路径(画布),其中有一个洞。 在SVG中,路径定义如下:
M 100 100 L 200 100 L 200 200 L 100 200 L 100 100 z
M 125 125 L 175 125 L 175 175 L 125 175 L 125 125 z
我想绘制这条路径(形状)而没有路径减法路径(因为具体的软件设计)
我尝试使用java绘制了一个没有洞的完整正方形。我想知道,为什么一个SVG查看器用精神上的定义绘制漏洞而java画布没有?区别在哪里?我怎样才能做到这一点?
Path p=new Path();
p.moveTo(100, 100);
p.lineTo(200,100);
p.lineTo(200,200);
p.lineTo(100,200);
p.close();
p.moveTo(150, 150);
p.moveTo(180, 150);
p.moveTo(180, 180);
p.moveTo(150, 180);
p.close();
canvas.drawPath(p, paint);
任何提示?
问候
答案 0 :(得分:33)
您应该使用Path.setFillType(Path.FillType.EVEN_ODD)
:
final Path path = new Path();
final Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
path.moveTo(100, 100);
path.lineTo(200, 100);
path.lineTo(200, 200);
path.lineTo(100, 200);
path.close();
path.moveTo(150, 150);
path.lineTo(180, 150);
path.lineTo(180, 180);
path.lineTo(150, 180);
path.close();
path.setFillType(Path.FillType.EVEN_ODD);
canvas.drawPath(path, paint);
答案 1 :(得分:0)