Czy możemy umieścić płótno wewnątrz istniejącego płótna? Jeśli możemy, pomóżcie to zrobić w html5.Płótno wewnątrz płótna html5
Odpowiedz
Istnieją dwa możliwe sposoby interpretacji pytania. Jednym z nich jest, że masz na myśli faktycznie gniazdo canvas
same elementy, takie jak ten:
<canvas id="outer">
<canvas id="inner"></canvas>
</canvas>
To jest legalne (według validator.nu), ale bezcelowe. Zawartość wewnątrz elementu canvas
służy do wycofania. Jedynym sposobem wykorzystania zawartości elementu canvas
jest, jeśli przeglądarka nie obsługuje canvas
, w takim przypadku wewnętrzny element canvas
i tak nie będzie widoczny.
Innym możliwym sposobem na zinterpretowanie pytania jest wyświetlenie obrazu pokazanego na jednym płótnie w innym. Jest to dość proste, element canvas
może być użyty jako pierwszy parametr dla context.drawImage()
. Jeśli masz dwie canvas
elementy:
<canvas id="c1" width="200" height="200"></canvas>
<canvas id="c2" width="200" height="200"></canvas>
Następnie this script (using jQuery) wyciągnie na pierwszym canvas
a następnie dodać, że cztery razy jako obraz do drugiego canvas
:
var c1 = $('#c1');
var ctx1 = c1[0].getContext('2d');
ctx1.fillRect(50,50,100,100);
var c2 = $('#c2');
var ctx2 = c2[0].getContext('2d');
ctx2.drawImage(c1[0],0,0,100,100);
ctx2.drawImage(c1[0],100,0,100,100);
ctx2.drawImage(c1[0],0,100,100,100);
ctx2.drawImage(c1[0],100,100,100,100);
ale znowu, dlaczego prawda? Można replikować obraz drugiego canvas
powyżej just using one:
var c1 = $('#c1');
var ctx1 = c1[0].getContext('2d');
ctx1.fillRect(25,25,50,50);
ctx1.fillRect(125,25,50,50);
ctx1.fillRect(25,125,50,50);
ctx1.fillRect(125,125,50,50);
Tak w skrócie: tak, to jest możliwe, ale nie jest to naprawdę konieczne prostego stosowania.
Istnieje wiele (niewątpliwie nietrywialnych) powodów używania drugiego płótna. Na przykład, rysowanie ruchomego wykresu jest najłatwiejsze poprzez skopiowanie wykresu na inny obszar poza ekranem, wyczyszczenie głównego obszaru roboczego, a następnie skopiowanie przesunięcia z lewej strony ekranu o jeden piksel i narysowanie nowych danych w brakującej kolumnie. (Jest to konieczne tylko wtedy, gdy tło wykresu jest przezroczyste.) – Phrogz
@Phrogz Tak, również różne rzeczy do przetwarzania obrazu. Ale stoję przy moim "nie jest to konieczne w prostym użyciu", nie sądzę, że którykolwiek z tych materiałów jest istotny dla tego pytania lub tej odpowiedzi. – robertc
Być może nie, ale nowicjusz może przyjąć twoje sformułowanie, aby znaczyło, że jest nadmierne, gdy często jest to lepszy i bardziej optymalny sposób osiągnięcia czegoś. Jeśli masz zmienne płótno z elementami statycznymi (powiedzmy, gra), to ta technika ma ogromne zalety wydajności - wystarczy tylko raz narysować bitmapę/wektory w płótnie, a następnie po prostu narysować ją na głównej podczas aktualizacji. +1 za dobrą odpowiedź. – MickMalone1983
Bezcelowe byłoby zagnieżdżanie płótna wewnątrz innego płótna. Strona wyświetla tylko to, co znajduje się wewnątrz znacznika canvas
, jeśli przeglądarka nie obsługuje canvas
. Po prostu zrób to, co powiedział robertc:
<canvas id="background">fallbacks/polyfills go in here...</canvas> <canvas id="foreground">.. or here, but not other canvases.</canvas>
- 1. centrum html płótno wewnątrz div bez rozciągania płótna
- 2. HTML5 getImageData bez płótna
- 3. Biblioteka płótna Dart HTML5?
- 4. Konwersja obrazu na płótno/HTML5
- 5. HTML5 Przenosząca płótno maska alfa
- 6. Silverlight: przepełnienie płótna
- 7. Dlaczego warto używać płótna do animacji w html5?
- 8. zapobiegają przewijanie podczas HTML5 imprezy płótno touchmove
- 9. Promień obramowania CSS3 na płótno HTML5
- 10. Nakładka na płótno HTML5 nad zdjęciem
- 11. Wyciągnięcie na płótno Html5 Obraz rozciągnięty
- 12. Metoda konwersji płótna HTML5 na SVG?
- 13. Tworzenie prostej gry samochodowej z płótna HTML5
- 14. Rysowanie płótna HTML5 z kątem pod kątem
- 15. Animacja płótna Html5 nie działa prawidłowo
- 16. Płótno drawImage() słaba jakość
- 17. jak wyrównać centrum bitmapy wewnątrz płótna w systemie Android?
- 18. Narysuj tekst wewnątrz łuku używając płótna
- 19. Płótno HTML z paskiem przewijania
- 20. Jak ustawić rozmiar płótna?
- 21. fabric.js ... jak centrum płótna
- 22. Zapisywanie płótna WPF jako obrazu
- 23. Przeciągnij płótno w konstruktorze interfejsu
- 24. Płótno html5 kliknięcie na detekcji kształtu ścieżki Beziera
- 25. Istnieje luka 4px poniżej płótno/wideo/audio w elementy HTML5
- 26. Czy płótno HTML5 obsługuje funkcję powiększania opartą na przeglądarce?
- 27. jak narysować siatkę używając html5 i (płótno lub svg)
- 28. Płótno HTML5 (gra) na iPadzie/tabletach z systemem Android
- 29. Natywna przeglądarka systemu Android powielanie płótna HTML5 (w porządku w chromie)
- 30. Dodaj widżet (przycisk) do płótna HTML5 w GWT
Podaj więcej szczegółów, co faktycznie próbujesz osiągnąć. – Phrogz