Как нарисовать стрелку в android.graphics.Path с правильными конфигурациями

Что я пробовал:

Я пытаюсь отобразить линию стрелки с помощью следующего кода

Path mArrowPath=new Paint();;
mArrowPath.rewind();
mArrowPath.moveTo(0, mHeight / 2);
mArrowPath.lineTo(mWidth / 2, 0);
mArrowPath.lineTo(mWidth, mHeight / 2);
mArrowPath.lineTo(mWidth * 3 / 4, mHeight / 2);
mArrowPath.lineTo(mWidth * 3 / 4, mHeight);
mArrowPath.lineTo(mWidth / 4, mHeight);
mArrowPath.lineTo(mWidth / 4, mHeight / 2);
mArrowPath.lineTo(0, mHeight / 2);

Shape pathshap = new PathShape(mArrowP,maxWidth,maxHeight);

ShapeDrawable shapeD = new ShapeDrawable(pathshap);

shapeD.draw(canvas); //display it in onDraw(Canvas canvas)

Я получил следующий результат

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

Проблема:

Я не могу нарисовать требуемый ожидаемый результат, мне не удалось понять/найти параметры конфигурации пути для отображения следующего результата! Мне не удалось увеличить длину, ширину размер линии стрелки.

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

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

любая помощь будет признательна!


person LOG_TAG    schedule 10.10.2014    source источник
comment
Вы пытались заменить mWidth на mHeight и наоборот в своем коде?   -  person Karakuri    schedule 10.10.2014
comment
Да, я не силен в графике, у меня не получилось увеличить длину хвоста стрелы. с указанной конфигурацией.   -  person LOG_TAG    schedule 10.10.2014
comment
Я не могу использовать canvas.drawPath(path, paint) для рисования такой линии stackoverflow.com/questions/6713757/   -  person LOG_TAG    schedule 10.10.2014


Ответы (1)


вы можете использовать метод canvas.rotate() для поворота стрелки

OR

Path mArrowPath=new Paint();;
mArrowPath.rewind();
mArrowPath.moveTo(mWidth , mHeight / 2);
mArrowPath.lineTo(mWidth / 2, mHeight );
mArrowPath.lineTo(mWidth / 2, mHeight* 3 / 4);
mArrowPath.lineTo(0, mHeight* 3 / 4);
mArrowPath.lineTo(0, mHeight/ 4);
mArrowPath.lineTo(mWidth / 2, mHeight/ 4);
mArrowPath.lineTo(mWidth / 2,0);
mArrowPath.lineTo(mWidth , mHeight / 2);
Shape pathshap = new PathShape(mArrowP,maxWidth,maxHeight);

ShapeDrawable shapeD = new ShapeDrawable(pathshap);

shapeD.draw(canvas);
person Nooh    schedule 10.10.2014
comment
В этом случае я не могу использовать холст, так как я использую ShapeDrawable , я могу использовать Matrix для любого поворота фигуры, я ищу конфигурацию rifgt для изменения длины хвоста стрелки. - person LOG_TAG; 10.10.2014
comment
я думаю, что это проблема с вашими координатами, попробуйте нарисовать на бумаге. @LOG_TAG - person Nooh; 10.10.2014