Позиционирование пути.lineTo()

#java #android #canvas

#java #Android #холст

Вопрос:

В настоящее время я изучаю Canvas в Android Studio, и я не очень уверен в использовании правильного заголовка, но я застрял на том, как управлять положением треугольника при перетаскивании красной точки с помощью Seekbar. ниже приведены подробности

Ниже приведены коды, с помощью которых я успешно нарисовал треугольник.

         @Override
        protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        paint.setColor(Color.RED);
        canvas.drawRoundRect(100, 300, 900, 700, 50, 50,paint);

        Point pointTop = new Point(250, 400);
        Point pointLeft = new Point(150, 150);
        Point pointRight = new Point(350, 150);


        paint.setColor(Color.YELLOW);
        path.setFillType(Path.FillType.EVEN_ODD);
        path.lineTo(pointTop.x, pointTop.y);
        path.lineTo(pointLeft.x, pointLeft.y);
        path.lineTo(pointRight.x, pointRight.y);
        path.lineTo(pointTop.x, pointTop.y);
        path.close();

        canvas.drawPath(path, paint);
        }
  

Результат изображения:

введите описание изображения здесь

Ожидаемый результат

Примечание: есть только 1 красная точка и 1 треугольник.

введите описание изображения здесь

очень признателен =)

Ответ №1:

Я решил свою проблему после прочтения документов по ссылке ниже и добавил коды

https://developer.android.com/reference/android/graphics/Path

Наслаждайтесь 🙂

         @Override
        protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        paint.setColor(Color.RED);
        canvas.drawRoundRect(100, 300, 900, 700, 50, 50,paint);

        Point pointTop = new Point(250, 400);
        Point pointLeft = new Point(150, 150);
        Point pointRight = new Point(350, 150);


        paint.setColor(Color.YELLOW);
--------------------- added -------------------------------
        path.moveTo(pointLeft.x, pointLeft.y);
        path.moveTo(pointRight.x, pointRight.y);
        path.moveTo(pointTop.x, pointTop.y);
        path.reset();
--------------------- added -------------------------------
        path.setFillType(Path.FillType.EVEN_ODD);
        path.lineTo(pointTop.x, pointTop.y);
        path.lineTo(pointLeft.x, pointLeft.y);
        path.lineTo(pointRight.x, pointRight.y);
        path.lineTo(pointTop.x, pointTop.y);
        path.close();

        canvas.drawPath(path, paint);
        }
  

Ответ №2:

Посмотрите на класс Node, а затем особенно на setTranslateX.

Комментарии:

1. Привет, DrPhill, спасибо за совет. После нескольких часов чтения я признаю, что мои основы недостаточно хороши, поэтому, к сожалению, я все еще понятия не имею, как использовать это для решения моей проблемы: (