Подтвердить что ты не робот

Кривая и холст Безье

Как я могу рисовать кривую Безье в холсте. У меня есть только начальная точка и конечная точка. Я хочу нарисовать линию от начальной точки до конечной точки. Как я могу это сделать?

4b9b3361

Ответ 1

Для этого вы можете использовать Path.quadTo() или Path.cubicTo(). Примеры можно найти в примерах SDK (FingerPaint). В вашем случае вам просто нужно вычислить среднюю точку и передать затем три точки на quadTo()..

Код для вас:

  • (x1, y1) и (x3, y3) - ваши начальные и конечные точки соответственно.
  • создать объект рисования только один раз (например, в вашем конструкторе)

    Paint paint = new Paint() {
        {
            setStyle(Paint.Style.STROKE);
            setStrokeCap(Paint.Cap.ROUND);
            setStrokeWidth(3.0f);
            setAntiAlias(true);
        }
    };
    
    final Path path = new Path();
    path.moveTo(x1, y1);
    
    final float x2 = (x3 + x1) / 2;
    final float y2 = (y3 + y1) / 2;
    path.quadTo(x2, y2, x3, y3);
    canvas.drawPath(path, paint);
    

Ответ 2

С Path вы можете нарисовать кубические и квадратичные кривые Безье. См. cubicTo() и quadTo()

Ответ 3

Вам нужно установить цвет... ваш код верен и измените x3,x3 на x3,y3 в quadTO().