Нарисуйте стрелку по пути - PullRequest
0 голосов
/ 27 ноября 2018

В настоящее время я рисую наконечник стрелки на холсте, выполняя следующие действия:

mPaint.setStyle(Style.FILL);

float deltaX = this.mPoints[1].x - this.mPoints[3].x;
float deltaY = this.mPoints[1].y - this.mPoints[3].y;
float frac = (float) 0.1;

float point_x_1 = this.mPoints[3].x + (1 - frac) * deltaX + frac * deltaY;
float point_y_1 = this.mPoints[3].y + (1 - frac) * deltaY - frac * deltaX;

float point_x_2 = this.mPoints[1].x;
float point_y_2 = this.mPoints[1].y;

float point_x_3 = this.mPoints[3].x + (1 - frac) * deltaX - frac * deltaY;
float point_y_3 = this.mPoints[3].y + (1 - frac) * deltaY + frac * deltaX;

Path path = new Path();
path.setFillType(Path.FillType.EVEN_ODD);

path.moveTo(point_x_1, point_y_1);
path.lineTo(point_x_2, point_y_2);
path.lineTo(point_x_3, point_y_3);
path.lineTo(point_x_1, point_y_1);
path.lineTo(point_x_1, point_y_1);
path.close();

canvas.drawPath(path, mPaint);

Вышеприведенное работает отлично.У меня проблема в том, что направление стрелки всегда указывает на верхний правый угол моего экрана.

enter image description here


МОЙ ВОПРОС:

Как я могу изменить то, что у меня уже есть, чтобы нарисовать стрелку в направлении моего onTouchEvent?


Стоит также упомянуть, что в моем onTouchEvent я уже получаю направление, которое передаю своему onDraw, как показано ниже:

//Starting point X
float startX = mX; // MotionEvent.ACTION_DOWN ---> mX = event.getX();
//Starting point Y
float startY = mY; // MotionEvent.ACTION_DOWN ---> mY = event.getY();
//Move to X
float stopX = pX; // MotionEvent.ACTION_MOVE ---> pX = event.getX();
//Move to Y
float stopY = pY; // MotionEvent.ACTION_MOVE ---> pY = event.getY();

Используя вышеизложенное, когда я рисую линию, я вызываю:

canvas.drawLine(startX, startY, stopX, stopY, mPaint);

Это нарисует линию в нужном мне направлении.Проблема в том, что canvas.drawPath занимает 2 поля path и рисует, где canvas.drawLine занимает 5 полей startX, startY, stopX, stopY, paint.

Любой совет будет принят с благодарностью.

...