Estoy portando una aplicación escrita en un entorno de gráficos que permite que el dibujo se realice fuera de los límites del rectángulo de recorte. ¿Alguna forma de hacer esto en Android?¿Puedo dibujar fuera de los límites de un lienzo de Android?
Respuesta
Puede dibujar donde desee, pero no se guardará nada fuera del rectángulo de recorte.
Para dibujar fuera de los límites, debe expandir el clipRect del lienzo.
Comprueba los métodos de clipRect sobrecargados en la clase Canvas.
Nota: Deberá especificar la operación Región porque la operación predeterminada es INTERSECCIÓN. Así que algo como esto:
Rect newRect = canvas.getClipBounds();
newRect.inset(-5, -5) //make the rect larger
canvas.clipRect (newRect, Region.Op.REPLACE);
//happily draw outside the bound now
No funciona en absoluto. Acabo de cambiar el tamaño del lienzo con los parámetros (-2000, -2000) y luego lo traduzco, pero la imagen que dibujo todavía está recortada. – tomrozb
funcionó para mí. +1 – dac2009
pero si lo haces en cada 'onDraw (Canvas canvas)' ¿no estás haciendo que la computadora haga mucho trabajo extra? –
intenta establecer
android:clipChildren="false"
a la vista padre
No sé sobre la pregunta, pero quiero agradecerle por resolver, mi problema, que estaba enfrentando. Gracias. Esto es lo que estaba buscando. – tannerjohn
Por favor, eche un vistazo a http://stackoverflow.com/questions/32735119/draw-outside-the-bounds-of-an-android- canvas –
@MortezaRastgoo la pregunta (y las respuestas) vinculadas no se traducen directamente a este problema en absoluto. –
El @numan respuesta dio es casi bien, el problema es la asignación de memoria con este enfoque, por lo que debería estar haciendo esto, en su lugar:
// in constructor/elsewhere
Rect newRect = new Rect();
// in onDraw
canvas.getClipBounds(newRect);
newRect.inset(0, -20); //make the rect larger
canvas.clipRect(newRect, Region.Op.REPLACE);
que resuelve el problema :-)
¿Cómo iniciar 'newRect'? –
Bien, supongo que el punto aquí es que newRect se asigna una vez por objeto init, en lugar de asignarlo cada vez que se llama a OnDraw. –
Lo intenté, pero no funcionó. –
Si desea dibujar el texto fuera de los límites de Vista de Texto, que debería estar haciendo esto en su lugar:
<TextView
...
android:shadowColor="#01000000"
android:shadowDx="100" // out of right bound
android:shadowDy="0"
android:shadowRadius="1"
.../>
No está funcionando para usar clipRect() como respuesta @ de Numan porque TextView clip de su propio rect en onDraw():
if (mShadowRadius != 0) {
clipLeft += Math.min(0, mShadowDx - mShadowRadius);
clipRight += Math.max(0, mShadowDx + mShadowRadius);
clipTop += Math.min(0, mShadowDy - mShadowRadius);
clipBottom += Math.max(0, mShadowDy + mShadowRadius);
}
canvas.clipRect(clipLeft, clipTop, clipRight, clipBottom);
por último, pero no menos importante, no se olvide de establecer android:clipChildren="false"
y android:clipToPadding="false"
en su padre ViewGroup
- 1. dibujar fuera de los límites de UIView desde drawRect
- 2. Android: dibujar un lienzo en un ImageView
- 3. Overlay de Android fuera/entre los límites del diseño
- 4. Dibujo fuera de los límites de UITableViewCell
- 5. Java Arrays Index fuera de los límites
- 6. En iOS, drawRect no puede dibujar fuera de los límites de la vista?
- 7. ArrayList índice fuera de los límites
- 8. Envoltura larga de texto en un lienzo de Android
- 9. Cómo dibujar un triángulo relleno en un lienzo Android?
- 10. Lienzo de relleno fuera del rectángulo
- 11. NSArray fuera de límites ver
- 12. Lienzo pellizcar-Zoom a punto dentro de los límites
- 13. ¿Cómo dibujar texto en lienzo?
- 14. ¿Puedo dibujar con antialiasing en lienzo?
- 15. Android: escalado de texto incorrecto al dibujar texto en lienzo
- 16. dibujar objeto/imagen en lienzo
- 17. usando EmbeddedChartBuilder y 'conseguir columnas están fuera de los límites'
- 18. Voltear un lienzo de Android
- 19. dibujar/pintar de formulario fuera
- 20. dibujar texto "ellipsized" en un lienzo
- 21. Android SQLite cursor fuera de los límites de excepción SELECT count (*) FROM tabla
- 22. Dibujar texto girado en un lienzo HTML5
- 23. ¿Cómo puedo ordenar una referencia COM fuera de proceso a través de los límites del proceso?
- 24. android cómo dibujar triángulo, estrella, cuadrado, corazón en el lienzo
- 25. ¿Subcadena con rango fuera de límites?
- 26. Dibujar un lienzo en otro lienzo es borroso. ¿Cómo puedo arreglarlo?
- 27. Lienzo HTML - Dibujar flechas curvas
- 28. Cómo dibujar polígonos en un lienzo HTML5?
- 29. ¿Cómo puedo dibujar cosas tipo fuera de drawrect?
- 30. Mostrar control dentro del control de usuario fuera de los límites de su elemento primario
no tenemos idea de lo que estás hablando con un ejemplo y algunos código – Falmarri