Я работаю над игрой, где у меня есть некоторые кривые Безье. На данный момент все в порядке, и оно работает так, как должно, хотя я делаю некоторые сложные операции на этих кривых. Для построения кривых я использую холст и путь, как это:Пользовательские кривые линии в Android
параметраprivate void refresh() {
mPath = new Path();
mPath.moveTo(start_x, start_y);
mPath.cubicTo(anchor1_x, anchor1_y, anchor2_x, anchor2_y, end_x, end_y);
}
public void draw(Canvas canvas, Paint paint) {
Path newPath = new Path(mPath);
Matrix mMatrix = new Matrix();
mMatrix.setTranslate(-mCamera.x1, -.mCamera.y1);
mMatrix.postScale(mCamera.getWidthRatio(), mCamera.getHeightRatio());
newPath.transform(mMatrix);
canvas.drawPath(newPath, paint);
}
Краску Ussually следующий:
curvesPaint = new Paint();
curvesPaint.setColor(0xFFFFFFFF);
curvesPaint.setAntiAlias(true);
curvesPaint.setStrokeCap(Paint.Cap.ROUND);
curvesPaint.setStrokeJoin(Paint.Join.ROUND);
curvesPaint.setStyle(Paint.Style.STROKE);
curvesPaint.setStrokeWidth(canvas.getHeight()/100f);
if (shadow)
curvesPaint.setShadowLayer(canvas.getHeight()/50f, 0, 0, 0xAAFFFFFF);
else
curvesPaint.setShadowLayer(0, 0, 0, 0xAAFFFFFF);
Мой вопрос: как я могу сделать кривые более красивым? На данный момент они только белые (или белые с белой тенью). Я хочу иметь возможность рисовать их с хорошим градиентом или моделью, и я не знаю, как это сделать. Я думал о функции setShader класса Paint, но я не знаю, могу ли я использовать его для своей цели или как ее использовать. Другие решения, такие как рисование нескольких путей один над другим, явно непрактичны из-за низких кадров в секунду.