Я работаю над пользовательским представлением (extends View
) и работает в методе onDraw
.
Я сделал путь стрелки:
ARROW_PATH = new Path();
ARROW_PATH.setLastPoint(20, 37);
ARROW_PATH.lineTo(14, 25);
ARROW_PATH.lineTo(18, 26);
ARROW_PATH.lineTo(17, 4);
ARROW_PATH.lineTo(23, 4);
ARROW_PATH.lineTo(22, 26);
ARROW_PATH.lineTo(26, 25);
ARROW_PATH.close();
В разных сценариях его нужно повернуть, чтобы изобразить определенный угол, и мне нужно нарисовать его на определенной координате в представлении. Координата также изменяется в зависимости от сценария.
Я пробовал играть с Canvas.rotate
, однако, похоже, что аспект пути искажен, когда значения px
и py
не равны (стрелка становится более узкой и более высокой, когда py > px
.
Я также пробовал Canvas.rotate(angle, 0, 0);
, а затем ARROW_PATH.moveTo(x, y);
, но похоже, что коорды вращаются на произвольный угол, из-за чего очень сложно вычислить требуемую координату.
В идеале, я хотел бы повернуть путь, а не холст, но я не думаю, что эта операция поддерживается API.
Может кто-нибудь предложить лучший подход к этой проблеме?
спасибо, стр.