Android не имеет удобного действия drawPolygon(x_array, y_array, numberofpoints)
, как Java. Вы должны пройти через создание объекта Path
точка за точкой. Например, чтобы создать заполненную форму трапеции для трехмерной стены подземелья, вы можете поместить все свои точки в массивы x и y, а затем кодировать следующим образом:
Paint wallpaint = new Paint();
wallpaint.setColor(Color.GRAY);
wallpaint.setStyle(Style.FILL);
Path wallpath = new Path();
wallpath.reset(); // only needed when reusing this path for a new build
wallpath.moveTo(x[0], y[0]); // used for first point
wallpath.lineTo(x[1], y[1]);
wallpath.lineTo(x[2], y[2]);
wallpath.lineTo(x[3], y[3]);
wallpath.lineTo(x[0], y[0]); // there is a setLastPoint action but i found it not to work as expected
canvas.drawPath(wallpath, wallpaint);
Чтобы добавить постоянный линейный градиент для некоторой глубины, вы можете написать код следующим образом. Примечание y [0] используется дважды, чтобы сохранить горизонтальный градиент:
wallPaint.reset(); // precaution when resusing Paint object, here shader replaces solid GRAY anyway
wallPaint.setShader(new LinearGradient(x[0], y[0], x[1], y[0], Color.GRAY, Color.DKGRAY,TileMode.CLAMP));
canvas.drawPath(wallpath, wallpaint);
См. Документацию Paint , Path и Canvas для получения дополнительных параметров, таких как градиенты, определенные в массиве, добавление дуг и наложение растрового изображения на полигоне.