sola - Cómo rotar un rectángulo dibujado sobre lienzo en Android?
porque no gira la pantalla de mi samsung (2)
Encontré mi propia respuesta. Use el siguiente código
Rect rect = new Rect();
paint.setColor(text_color);
paint.setStyle(Style.FILL);
paint.getTextBounds(text, 0, text.length(), rect);
canvas.translate(xPosition + position.getX(), yPosition + position.getY());
canvas.translate(-(xPosition + position.getX()), -(yPosition + position.getY()));
canvas.rotate(getDegreesFromRadians(angle), xPosition + position.getX() + rect.exactCenterX(), yPosition + position.getY() + rect.exactCenterY());
canvas.drawText(text, xPosition + position.getX(), yPosition + position.getY(), paint);
paint.getTextBounds(text, 0, text.length(), rect);
canvas.translate(xPosition + position.getX(), yPosition + position.getY());
paint.setColor(Color.BLUE);
paint.setStyle(Style.STROKE);
paint.setStrokeWidth(4);
rect = new Rect(rect.left - 10, rect.top - 10, rect.right + 10, rect.bottom + 10);
canvas.drawRect(rect, paint);
El asunto es que todo el lienzo se está girando para rotar el texto. Entonces solo necesito dibujar el rectángulo después de la rotación del lienzo.
Estoy dibujando un texto en el lienzo de Android con la siguiente pieza de código
Rect rect = new Rect();
paint.getTextBounds(text, 0, text.length(), rect);
canvas.translate(xPosition + position.getX(), yPosition + position.getY());
paint.setColor(Color.BLUE);
paint.setStyle(Style.STROKE);
canvas.drawRect(rect, paint);
paint.setStyle(Style.FILL);
paint.setColor(text_color);
canvas.translate(-(xPosition + position.getX()), -(yPosition + position.getY()));
canvas.rotate(getDegreesFromRadians(angle), xPosition + position.getX() + rect.exactCenterX(), yPosition + position.getY() + rect.exactCenterY());
canvas.drawText(text, xPosition + position.getX(), yPosition + position.getY(), paint);
Este código se encarga de la rotación del texto y funciona bien. Estoy dibujando un rectángulo azul alrededor del texto usando el código anterior. Ahora mi problema es que el rectángulo no gira junto con el texto. Aún permanece igual. ¿Hay alguna manera de rotar el rectángulo dibujado en el lienzo de Android?
por favor use
canvas.save();
canvas.rotate();
//stuff to draw that should be rotated
canvas.restore();
de lo contrario, tienes que compensar cada rotación después