Позиционирование path.lineTo () - PullRequest
2 голосов
/ 19 марта 2019

В настоящее время я изучаю 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);
        }

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

enter image description here

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

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

enter image description here

высоко ценится =)

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

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

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);
        }
0 голосов
/ 20 марта 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...