Удалите одну фигуру из другой с помощью 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.

Возможно, это поможет кому-то: мне пришлось установить fillType базы в EVEN_ODD

 base.setFillType(FillType.EVEN_ODD);