Estoy trabajando en una vista personalizada (extends View
) y trabajando en el método onDraw
.dibujar la ruta rotada en el punto particular
he hecho un camino de una flecha:
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();
en diferentes escenarios que necesita para ser girada para representar un cierto ángulo, y tengo que dibujar en una en particular de coordenadas en la vista. La coordenada también cambia según el escenario.
He intentado jugar con Canvas.rotate
sin embargo, parece que el aspecto de la vía está sesgada cuando los px
y py
valores no son iguales (la flecha se hace más estrecho y más alto cuando py > px
.
también tengo Canvas.rotate(angle, 0, 0);
tratado y luego ARROW_PATH.moveTo(x, y);
pero parece que las coordenadas son girados por el ángulo arbitrario por lo que es muy difícil de calcular el requerido. coordinar
Idealmente, me gustaría hacer girar el camino y no el lienzo, pero no lo hago Creo que esta operación es compatible con la API.
¿Alguien puede sugerir un mejor enfoque para este problema?
gracias, p.
¿Por qué se ahorra? el estado dos veces? Parece redundante. –
pruébelo sin hacer la doble restauración/doble restauración ... no funciona. si tiene una mejor solución (que ha probado), publíquela. – pstanton