2014-11-01 2 views
1

Я работаю над игрой, где у меня есть некоторые кривые Безье. На данный момент все в порядке, и оно работает так, как должно, хотя я делаю некоторые сложные операции на этих кривых. Для построения кривых я использую холст и путь, как это:Пользовательские кривые линии в 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, но я не знаю, могу ли я использовать его для своей цели или как ее использовать. Другие решения, такие как рисование нескольких путей один над другим, явно непрактичны из-за низких кадров в секунду.

ответ

0

Предлагаю вам ознакомиться с использованием OpenGL или сторонних библиотек-оберток, таких как libgdx. Canvas предназначен для относительно простой графики. Я не думаю, что он использует преимущества устройств GPU. Чтобы воспользоваться всеми преимуществами GPU, вам нужно будет использовать OpenGL.