Mam grupę graficzną svg (mam na myśli ścieżki, rekatangles itp.). Chcę przeskalować grupę do pewnej wielkości, na przykład do 70,70. Wiem, że svg zapewnia transformację skali, ale skalowalność wymaga skalowania, którego nie wiem, ponieważ grupa może mieć wiele kształtów i nie jest łatwo określić rozmiar graniczny całej grupy.
Grałem z parametrem viewBox parametru svg elemenent i preserveAspectRatio, ale nie mogłem uzyskać pożądanego wyniku (grupa skali do 70,70).
Może jest możliwe skalowanie grupy z transformacją maxtrix lub istnieje w inny sposób?W jaki sposób mogę przeskalować grupę graficzną svg do pożądanego rozmiaru (nie przez współczynnik)?
Q
W jaki sposób mogę przeskalować grupę graficzną svg do pożądanego rozmiaru (nie przez współczynnik)?
8
A
Odpowiedz
6
Możesz użyć funkcji getBBox()
, aby pobrać bieżący rozmiar grafiki, a następnie użyć szerokości i wysokości, aby obliczyć współczynnik skali, który należy zastosować do grafiki, aby dopasować go do żądanego rozmiaru.
W poniższym przykładzie grafiki w grupie g1 jest skalowany w rectange o szerokości i wysokości ustawionej na 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>
Powiązane problemy
- 1. Jak wyśrodkować i przeskalować pliki SVG w innym pliku SVG
- 2. Jak tłumaczyć grupę SVG przez procent widoczności
- 3. W jaki sposób skalować wielokąt SVG w EMS?
- 4. ggplot2 transformacji przez stały współczynnik
- 5. Jak przeskalować węzeł obrazu?
- 6. Podzbiór współczynnik przez poziomy NA
- 7. Jak dodać "kliknij i przeciągnij", aby przeskalować obraz w SVG?
- 8. Jak przeskalować SVG, który ma niektóre złożone definicje ścieżek?
- 9. liczba przez grupę
- 10. SQL przez grupę problemu
- 11. W jaki sposób mogę zapewnić/zweryfikować metodę chronioną przez Moq?
- 12. W jaki sposób std :: unique_ptr nie ma narzutów rozmiaru?
- 13. git ignorować wyjątek nie działa jako pożądanego
- 14. W jaki sposób zmiany rozmiaru terminala są wysyłane do aplikacji wiersza poleceń przez ssh lub telnet?
- 15. SQL Server przez grupę/zamówienia przez
- 16. Firefox nie szanuje rozmiaru czcionki w tekście SVG
- 17. Python image library (PIL), jak skompresować obraz do pożądanego rozmiaru pliku?
- 18. W jaki sposób powstały livicony?
- 19. Tworzenie minimalnego rozmiaru Postgres SQL. W jaki sposób?
- 20. W scons, w jaki sposób mogę wstrzyknąć cel do zbudowania?
- 21. uzyskać użytkowników przez grupę w sharepoint
- 22. Pomiń obiekt Entity przez grupę przez
- 23. uzupełnienie brakujących wartości przez grupę w data.table
- 24. MySQL SELECT najczęściej przez grupę
- 25. Przeskaluje nachylenie i przeskalować przechwytujący
- 26. W jaki sposób nie blokować odczytu/zapisu przez zdalny FileSystem
- 27. Czy mogę utworzyć grupę zaznaczoną przez zapytanie, podając regexp_substr?
- 28. Dodawanie kolumny średnich przez grupę do oryginalnych danych
- 29. W polu Listbox, w jaki sposób mogę uzyskać szerokość listbox minus miejsce zajmowane przez pasek przewijania?
- 30. Skalowanie SVG w Javie
Dla tych, którzy chcą się bawić z tego rozwiązania, oto JSFiddle twojego rozwiązania: http://jsfiddle.net/luken/4xx9edo2/ ... Czy używanie atrybutu 'transform' jest jedynym rozwiązaniem? Nie ma sposobu, aby powiedzieć '', aby odziedziczyć szerokość i wysokość rodzica '
Działa doskonale, dzięki! To powinna być zaakceptowana odpowiedź. – Booligoosh