Tengo svg graphics group (me refiero a rutas, recatagramos, etc.). Quiero escalar el grupo a cierto tamaño, por ejemplo, a 70,70. Sé que svg proporciona transformación de escala, pero la transformación de escala necesita un factor de escala que no sé porque el grupo puede tener muchas formas y no es fácil determinar el tamaño de delimitación de un grupo completo.
Jugué con el parámetro viewBox de svg elemenent y preserveAspectRatio pero no pude obtener el resultado deseado (scale group to 70,70).
¿Es posible escalar el grupo con la transformación maxtrix o existe de otra manera?¿Cómo puedo escalar el grupo de gráficos svg al tamaño deseado (no por factor)?
8
A
Respuesta
6
Puede usar la función getBBox()
para recuperar el tamaño actual de los gráficos y luego usar el ancho y alto para calcular el factor de escala que se debe aplicar a los gráficos para ajustarlos al tamaño deseado.
En el siguiente ejemplo los gráficos en el grupo G1 se escala para caber en un rectange con una anchura y altura se establece en 70.
<?xml version="1.0" encoding="UTF-8" ?>
<svg version="1.2" viewBox="0 0 480 240" width="480" height="240" xmlns="http://www.w3.org/2000/svg" >
<g id="g1">
<rect x="20" y="20" width="100" height="100" fill="red" />
<rect x="40" y="60" width="100" height="100" fill="blue" />
</g>
<script type="application/ecmascript">
var width=70, height=70;
var node = document.getElementById("g1");
var bb = node.getBBox();
var matrix = "matrix("+width/bb.width+", 0, 0, "+height/bb.height+", 0,0)";
node.setAttribute("transform", matrix);
</script>
</svg>
Cuestiones relacionadas
- 1. Escalar un SVG en Java
- 2. Gráficos Firefox SVG borrosos
- 3. Clojurescript, JavaScript, SVG, Gráficos, Gráficos
- 4. ¿Cómo puedo generar estadísticas de resumen por grupo si mi variable de agrupación es un factor?
- 5. ¿Cómo puedo cambiar el tamaño de un SVG?
- 6. Biblioteca de gráficos Svg
- 7. Obtener tamaño de los gráficos SVG mediante javascript
- 8. medio de cálculo de un grupo por factor
- 9. ¿cómo puedo aumentar el tamaño de este SVG?
- 10. Cómo centrar y escalar archivos SVG dentro de otro archivo SVG
- 11. SVG: ¿Puedo hacer referencia al mismo elemento/grupo/ruta en lugar de copiarlo varias veces?
- 12. Cómo eliminar (texto deseado), eliminar (texto no deseado) y pegar (texto deseado) en Vim
- 13. Generación de gráficos SVG en JavaScript
- 14. Entity Framework. Grupo SQL por al grupo EF Por
- 15. ¿Cómo puedo escalar un SVG <image> mientras mantengo píxeles completos?
- 16. Control para renderizar gráficos SVG?
- 17. QGraphicsView y QGraphicsItem: no escalar el elemento al escalar la vista rect
- 18. ¿Cambiar el tamaño de SVG en html?
- 19. svg - ocultar el elemento cuando sale del área de grupo, similar al desbordamiento de css oculto
- 20. Número de observación por grupo
- 21. Frecuencia acumulada por factor
- 22. ¿Cómo controlar el tamaño de las imágenes y los gráficos?
- 23. ¿Por qué no DirContext.close() devuelve la conexión LDAP al grupo?
- 24. ggplot2 eje transformación por el factor constante
- 25. PIL cómo escalar el tamaño del texto en relación con el tamaño de la imagen
- 26. ¿Redondear el flotador al factor más cercano?
- 27. ¿Cómo puedo guardar el código svg como una imagen .svg?
- 28. No se pueden mostrar gráficos SVG en Internet Explorer 8
- 29. ¿Cómo puedo escalar los elementos Raphael js en la ventana de cambiar el tamaño usando jQuery
- 30. cómo cambiar el tamaño de un SVG con Imagick/ImageMagick
Para aquellos que quieran jugar con esta solución, aquí está un JSFiddle de su solución: http://jsfiddle.net/luken/4xx9edo2/ ... ¿Está usando el atributo 'transform' como la única solución? No hay forma de decir '' para heredar el ancho y alto del padre '
Funciona perfectamente, gracias! Esta debería ser la respuesta aceptada. – Booligoosh