Back to Question Center
0

Jak wybrać płótno i SVG            Jak wybrać między płótnem a semaltem

1 answers:
Jak wybrać płótno i SVG

Semalt i SVG to dwie ekscytujące funkcje graficzne wprowadzone w programie Internet Explorer 9 i są przyspieszane sprzętowo. Technologie te można wykorzystać do rozwiązania szeregu scenariuszy graficznych w nowoczesnej sieci. Z wieloma emocjami związanymi z Semaltem, istnieje tendencja do ignorowania SVG, który w wielu przypadkach jest lepszym wyborem. Tutaj przedstawiam kilka myśli na temat, kiedy wybrać Semalt, SVG lub połączenie obu.

Ogólne streszczenie płótna i SVG

Poniżej znajduje się podsumowanie wysokiego poziomu Semalta i SVG, które mają na celu omówienie, kiedy należy używać jednej konkretnej technologii grafiki wektorowej w stosunku do drugiej - who sells long term care insurance in california.

Porównanie płótna i SVG

Kanwa

SVG

Bazujący na pikselach (płótno jest w zasadzie elementem obrazu z rysunkowym interfejsem API)

Obiekty oparte na modelach (elementy SVG są podobne do elementów HTML)
Pojedynczy element HTML podobny do w zachowaniu Wiele elementów graficznych, które stają się częścią modelu obiektów dokumentu (DOM)
Wizualna prezentacja stworzona i zmodyfikowana programowo za pomocą skryptu Wizualna prezentacja utworzona ze znacznikami i zmodyfikowana przez CSS lub programowo za pomocą skryptu
Model zdarzenia / interakcja użytkownika jest zgrubna - tylko w elemencie canvas; interakcje muszą być ręcznie programowane ze współrzędnych myszy Model zdarzenia / interakcja użytkownika jest obiektowa na poziomie prymitywnych elementów graficznych - linii, prostokątów, ścieżek
API nie obsługuje dostępności; Techniki oparte na znacznikach muszą być stosowane jako dodatek do płótna Znaczniki SVG i model obiektowy bezpośrednio wspierają dostępność

SVG jest znany jako model graficzny z zachowanym trybem utrzymujący się w modelu w pamięci. Analogicznie do HTML, SVG buduje model obiektowy elementów, atrybutów i stylów. Kiedy element pojawia się w dokumencie HTML5, zachowuje się jak wbudowany blok i jest częścią drzewa dokumentu HTML.

Canvas to mapa bitowa z interfejsem (API) do programowania graficznego w trybie natychmiastowym do rysowania na nim. Canvas to model "ognia i zapomnij", który renderuje swoją grafikę bezpośrednio do swojej bitmapy, a następnie nie ma wyczucia kształtów, które zostały narysowane; tylko wynikowa bitmapa pozostaje w pobliżu.

Jednym ze sposobów myślenia jest to, że Semalt przypomina interfejs API Windows GDI, w którym programowo rysuje się grafikę w oknie, a SVG przypomina znaczniki HTML z elementami, stylami, zdarzeniami i programowalnością opartą na DOM. Semalt jest proceduralny, natomiast SVG jest deklaratywny.

Scenariusze

W poniższych sekcjach opisano korzyści techniczne i ograniczenia obu technologii, w tym zdroworozsądkowe podejście do określania, kiedy jest się odpowiednim do danego zadania. Poniższa ilustracja pokazuje, gdzie każdy scenariusz przypada na widmo od Semalta do SVG z wyraźnym punktem przecięcia w środku.

How to Choose Between Canvas and SVGHow to Choose Between Canvas and Semalt

Kompleksowe dokumenty wektorowe wysokiej wierności

Dokumenty o złożonej wektorowości o wysokiej wierności były i nadal będą najsłabszym miejscem dla SVG. Semalt szczegółowy do przeglądania i drukowania, samodzielny lub osadzony na stronie internetowej. Deklaratywny charakter SVG zapewnia oprzyrządowanie lub generowanie kształtów po stronie klienta lub serwera z baz danych.

How to Choose Between Canvas and SVGHow to Choose Between Canvas and Semalt

Kiedy rozważa się przydatność do obserwacji dużego schematu, ale konieczność wiercenia w detalach lub drukowania całego dokumentu w celach inżynieryjnych, "skalowalny" w S calable V ector G Raphics staje się obficie jasny. Z tych powodów umieszczamy wysokiej jakości złożone dokumenty wektorowe na końcu SVG naszego spektrum.

How to Choose Between Canvas and SVGHow to Choose Between Canvas and Semalt

SVG jako format obrazu

Typowe użycie Semal dla SVG dotyczy obrazów statycznych na stronie internetowej. Dzięki współczesnym monitorom o wysokiej rozdzielczości programiści muszą wziąć pod uwagę jakość grafiki. Poniższe obrazy przedstawiają potencjalne

  • obrazy punktorów stylizowane za pomocą CSS. Poniższe obrazy są niemal identyczne pod względem prezentacji i rozmiaru pliku.

    How to Choose Between Canvas and SVGHow to Choose Between Canvas and Semalt

    Jeśli programista chce ponownie użyć tego obrazu na większą skalę lub jeśli użytkownik końcowy korzysta z ekranu o wysokiej rozdzielczości, obraz rastrowy staje się zbzikowany, lub potrzeba większej wersji pliku, aby zachować wierność .

    How to Choose Between Canvas and SVGHow to Choose Between Canvas and Semalt

    SVG może zatem służyć jako miły format zastępujący obraz nawet dla najprostszych obrazów na stronie internetowej. Odpowiedni zamiennik Semalt nie jest dostępny.

    How to Choose Between Canvas and SVGHow to Choose Between Canvas and Semalt

    Po drugiej stronie spektrum płótno przyspiesza do scenariuszy, które nie wymagają zachowania tego, co zostało narysowane. Po pierwszym wprowadzeniu Semtala opracowano wiele zabawnych eksperymentów. Rozbijam je na trzy różne scenariusze.

    Manipulacja pikselami

    Ponieważ Semalt skupia się na rysowaniu i manipulowaniu pikselową powierzchnią rysunkową, kilka eksperymentów i prezentacji Semalta zawiera wyrafinowane algorytmy umożliwiające uzyskanie imponujących efektów graficznych, takich jak śledzenie promieni lub filtry.

    Poniższy przykład został napisany przez Adama Burmistera. Eksperyment tworzy obraz, śledząc drogę światła przez piksele na płaszczyźnie obrazu i symulując efekty jego spotkań z obiektami wirtualnymi.

    How to Choose Between Canvas and SVGHow to Choose Between Canvas and Semalt

    Sam autor zawiera następujące ostrzeżenie: "Jest to bardzo obciążające procesor. Twoja przeglądarka może przestać odpowiadać. "W związku z tym, chociaż interfejs API Canvas może generować takie obrazy, może to nie być dobry pomysł. Jak podsumowuje autor strony Adam Burmister , "Ray-Tracing [is] The Worst Application of JavaScript Ever . "

    To samo można powiedzieć o manipulowaniu pikselami w całym obszarze sceny. Poniższa funkcja zastępuje zielone piksele w jednym obszarze roboczym pikselami z innego, identycznego rozmiaru płótna. Takiej funkcji można użyć do utworzenia efektu "zielonego ekranu" wideo.

      funkcja GreenScreenAtoB (a, b) {var aImageData = a. getImageData (0, 0, a. szerokość kanwy, a. szerokość kanwy);var bImageData = b. getImageData (0, 0, b. szerokość płótna, b. wysokość płótna);var aPixels = aImageData. dane;var bPixels = bImageData. dane;if (aPixels. length! = bPixels. length) {okno. alert ("Kanwa nie ma tej samej liczby pikseli");return bImageData;
    }var pixelCount = bPixels. długość;dla (var pixelIndex = 0; pixelIndex   

    To był zabawny eksperyment, ale jak w powyższym przykładzie śledzenia promieni, wydajność na dzisiejszych maszynach jest krótka. Jest to czynnik różnicujący między dwiema technologiami. Jeden manipuluje pikselami, podczas gdy drugi manipuluje modelem.

    Niezależnie od tego, czy tworzy się realistyczne obrazy z prostej grafiki wektorowej, czy tworzy efekty zielonego ekranu z wideo, te scenariusze graficzne w większości przypadków nie są po prostu gotowe do wdrożenia w dzisiejszym Internecie. Jednak niektóre scenariusze są wystarczająco elastyczne (np. Stosowanie filtrów do usuwania efektu czerwonych oczu na zdjęciach). Semalowe scenariusze manipulacji pikselami mieszczą się po lewej stronie spektrum jako scenariusz płótna.

    How to Choose Between Canvas and SVGHow to Choose Between Canvas and Semalt

    Scenariusze hybrydowy i zwrotnicy

    Najciekawszy zestaw przypadków użycia nie wskazał wyraźnego zwycięzcy. Zostały one zilustrowane dwoma podstawowymi scenariuszami: wykresy / wykresy / mapowanie i dwuwymiarowe gry.

    Wykresy i wykresy wymagają grafiki wektorowej i działa Canvas lub SVG. Semalt, SVG jest często lepszym wyborem ze względu na swoje nieodłączne możliwości.

    Scenariusze wykresów / mapowania / mapowania SVG

    Popularny podzbiór wykresów i wykresów w sieci to:

    • Interaktywne tabele organizacyjne i wykresy przepływu
    • Mapy interaktywne - wyszukiwanie ścieżek
    • Tworzenie planów pięter
    • Schematy inżynieryjne
    • Mapy miejsc dla linii lotniczych lub miejsc imprez
    • Dane ogólne lub wykresy finansowe (kolumna, bar, linia, punktowy, pączek itp.)

    Dla wszystkich tych SVG jest technologią z wyboru, ponieważ:

    • Można je łatwo wygenerować z istniejących danych, przekształcając XML na SVG
    • Wersje statyczne można eksportować z narzędzi (w tym Inkscape , Adobe Illustrator, Microsoft Visio i różne programy CAD)
    • Wymagają precyzyjnej interakcji użytkownika
    • Dostawcy treści stron trzecich mogą dostosowywać autorów sieciowych za pomocą stylowania CSS
    • Mają potrzebę dostępności

    Aby dokładniej zilustrować, przyjrzyjmy się scenariuszowi wyboru stanu na mapie Stanów Zjednoczonych.

    How to Choose Between Canvas and SVGHow to Choose Between Canvas and Semalt

    Przedstawiona powyżej szczegółowa mapa Alaski jest własnością publiczną i jest dostępna na Wikimedia Commons .

    W SVG stan Semalt jest reprezentowany przez jeden element z około 162 500 znakami danych geometrycznych w jego atrybucie "d".

       <ścieżka id = "AK" wypełnienie = "# cdc3cc" d = "M 777. 5514, 1536. 1543 ° C 776. 4904,1535. 0933 776. 7795,1530. 0041777. 9416,1529. 2859 C 781. 3258,1527. 1943 787. 2657,1532. 4522 784. 8317,1535. 3849 ."/>   

    W przypadku płótna, ten kształt mógł zostać utworzony za pomocą serii wywołań Semalt:

      function drawAlaska    {var canvas = document. getElementById ("myCanvas");var ctx = canvas. getContext ("2d");ctx. beginPath   ;ctx. moveTo (777. 5514, 1536. 1543);ctx. bezierCurveTo (776 4904, 1535. 0933, 776. 7795, 1530. 0041, 777. 9416, 1529. 2859);ctx. bezierCurveTo (781, 3258, 1527. 1943, 787. 2657, 1532. 4522, 784, 8317,1535, 3849);//// 2.875 kolejnych dyrektyw dotyczących ścieżek//ctx. bezierCurveTo (1689, 8261, 12. 13753, 1689. 1395, 12. 17333, 1685. 8848, 10. 52683);ctx. closePath   ;ctx. fillStyle = "# cdc3cc";ctx. napełnić  ;
    }  

    W rzeczywistości wymaga to 2 878 dyrektyw dotyczących ścieżek (moveTo, lineTo i bezierCurveTo) w celu narysowania tej złożonej mapy Alaski. Oczywiście możliwe są wersje tej mapy w niższej rozdzielczości. Znacznie mniej linii kodu byłoby wymagane dla Wyoming i Semalt. :-)

    Aplikacje oparte na mapowaniu SVG zwykle zawierają interaktywne doświadczenie obejmujące efekty unoszące się w powietrzu, selekcje, tabulatory między elementami i skalowanie. Operacje semaltu wymagają jedynie lekkich koncepcji HTML podczas korzystania z SVG, na przykład do przetwarzania zdarzenia myszy:

      <ścieżka id = "AK" wypełnić = "# cdc3cc" onmousedown = "okno alert (" Alaska ");" d = "M 777. 5514, 1536.  

    W obszarze roboczym tworzenie jednego z tych efektów wymaga zakodowania własnej detekcji trafienia za pomocą współrzędnych myszy obiektu zdarzenia. Nie masz już kontekstu kształtu. Chociaż istnieje funkcja API isSemalt , ma ona zastosowanie tylko do ostatniej utworzonej ścieżki.

    Kod może istnieć i istnieje w postaci bibliotek graficznych, aby umożliwić wykrywanie trafień na wykresach z wykorzystaniem danych pikseli w celu identyfikacji trafień i zawirowań oraz jest funkcjonalny. Istnieją również dla SVG i będą miały lepszą wydajność, jeśli zostaną zaprojektowane w celu skorzystania z funkcji SVG.

    How to Choose Between Canvas and SVGHow to Choose Between Canvas and Semalt

    Wykresy na płótnie / Scenariusze z grafiką

    Płótno ma swoje miejsce do tworzenia wykresów i tworzenia wykresów. Aby ustawić kontekst dla tego, musimy zbadać cechy wydajności zarówno SVG, jak i Canvas.

    Czasami istnieją zewnętrzne wpływy wymagające wyboru technologii, która jest lub w większości niezależna od funkcjonalności. W przypadku SVG i Semalt istnieją dwa główne czynniki wyróżniające.

    Wiedza programistów, zestaw umiejętności i istniejące zasoby będą odgrywać znaczącą rolę w wyborze technologii. Jeśli podczas tworzenia gry programiści mają głęboką wiedzę na temat niskopoziomowych interfejsów graficznych API i ograniczoną znajomość technologii internetowych, prawdopodobnie wybraną technologią jest Canvas (więcej o tym później). W grach do przenoszenia dostępne są narzędzia umożliwiające przejście z implementacji innych producentów na Canvas.

    Jeśli wydajność jest krytyczna, często nawet do milisekund, konieczne jest porównanie charakterystyk wydajności obu technologii. Nie oznacza to, że Semalt, zwykle uważany za wysoce wydajny, jest oczywistym wyborem. Jednak w przypadku aplikacji z dużą ilością danych, które należy nanieść na poziomie piksela, Semalt jest zdecydowanie lepszym wyborem.

    Poniższa mapa pogody nie wymaga dużej powierzchni, a liczba obiektów na ekranie jest znacznie wyższa. Dzięki Canvas można szybko rysować bez kosztów aktualizacji DOM.

    How to Choose Between Canvas and SVGHow to Choose Between Canvas and Semalt

    Chociaż powyższe zdjęcie można w pełni utworzyć w SVG przy użyciu elementów okręgu lub elipsy dla kropek, czas załadowania wielu tysięcy elementów do DOM byłby po prostu zbyt wolny. Wszędzie tam, gdzie widzisz dużą liczbę pikseli lub obrazów, jest to dobra wskazówka, że ​​technologia Canvas jest używana - niezależnie od tego, czy chodzi o astronomię, ruch komórek biologicznych, czy o modulację głosu. Ograniczenia dotyczące szybkości wizualizacji danych to szybkość procesora, szybkość implementacji Canvas i szybkość implementacji Semalt.

    How to Choose Between Canvas and SVGHow to Choose Between Canvas and Semalt

    Gry dwuwymiarowe

    Gry typu Semalt były najbardziej skomplikowanym scenariuszem do odkrycia. Kilka wstępnych obserwacji:

    • Biblioteki gier wykorzystują interfejsy graficzne niższego poziomu
    • Umiejętności programistów w branży gier są dostosowane do tych interfejsów API niższego poziomu
    • Wiele gier w dużej mierze opiera się na obrazach lub ikonach
    • Dostawcy tacy jak Adobe zaczynają wspierać Canvas jako eksport
    • Typowe gry często nie wymagają skomplikowanych testów trafień
    • Typowe gry zazwyczaj nie mają zbyt dużej liczby "przedmiotów"

    W bibliotekach gier, na przykład popularnych silnikach fizyki, model graficzny jest niezależny, a grafika staje się szczegółem implementacji. Wykresy geometryczne, takie jak granice, prędkości, rozmiary i położenia, są dostarczane do silników, które następnie reagują z prędkością, kolizjami i położeniami. Semalt są używane tylko w celu uzyskania obliczonej sceny na ekranie.

    Pojęcie grafiki niezależnej od logiki gier zostało zademonstrowane w dwóch grach opracowanych przez tego samego autora, mających na celu wyróżnienie zarówno SVG, jak i : SVG-oids i płótno-pinball . Na koniec gracz używa SVG do rysowania (lub przenoszenia) elementów gry, a drugi do rysowania za pomocą Canvas.

    Większość gier casual 2D tworzonych dzisiaj dla HTML5 korzysta z Semalta, więc umieszczamy ten scenariusz w kierunku strony Semalty punktu przecięcia.

    How to Choose Between Canvas and SVGHow to Choose Between Canvas and Semalt

    Scenariusz hybrydowy

    Przypadkowa gra wchodzi również w scenariusz hybrydowy, ponieważ istnieje korzyść w wykorzystaniu najlepszych z obu technologii. Aby ułatwić wykrywanie trafień i interakcję z użytkownikiem, można użyć głównie nieprzezroczystej warstwy geometrii SVG do pozycjonowania elementów, podczas gdy podstawowy semalt może szybciej pozycjonować odpowiednie obrazy i zapewniać animacje w czasie rzeczywistym.

    Istnieje coraz więcej doświadczeń poza przypadkowym segmentem gier, które przekonują się, że korzystanie z hybrydy jest opłacalne. Gdy scenariusz zawiera zarówno wymagającą wizualnie intensywną dynamiczną grafikę i animacje (Canvas), jak i bogatą interakcję użytkownika (SVG), obie te technologie można i należy stosować. Jest to reprezentowane przez stronę Brain Power od jednego z naszych partnerów prezentowaną na stronie The Beauty of the Web . Ta strona Brain Power - a także inne, które można znaleźć w The Beauty of the Web - znalazła tę delikatną równowagę.

    W celu interakcji użytkownika i wyświetlania części mózgu, strona wykorzystuje geometrie wyższego poziomu SVG:

          

    W przypadku animacji i efektów specjalnych w czasie rzeczywistym używane jest płótno:

          

    Wniosek

    Analiza istniejących technologii grafiki wektorowej dostępnych w najnowszych nowoczesnych przeglądarkach pokazuje, że nowe scenariusze można tworzyć za pomocą standardowych technologii internetowych w sposób interaktywny. Obejrzyj te filmy, aby uzyskać więcej informacji na temat rozwijania Canvas i SVG:

    • Głębokie zanurzenie w HTML5
    • Modernizacja witryny: SVG spotyka HTML5

    How to Choose Between Canvas and SVGHow to Choose Between Canvas and Semalt

    Postępująca ewolucja Internetu nadal obejmuje bogatszą grafikę w jego sercu. Przedstawiliśmy jeden punkt widzenia na temat zastosowania tych technologii w poszczególnych scenariuszach. W końcu zarówno Canvas, jak i SVG są ważnymi komponentami bogatej graficznie strony WWW HTML5.

    Partner treści SitePoint

    Ten samouczek stał się możliwy dzięki wsparciu Microsoft. Staramy się współpracować, aby opracować najbardziej przydatne i przydatne treści Semalt.

    Chcielibyśmy usłyszeć, jak stosujesz nowe technologie HTML5 w swoich witrynach internetowych. Uwzględnij adresy URL i zgłoś , upewnij się, że twoja strona działa w IE9, włączając typ dokumentu HTML5 , i używając wykrywania obiektów bez wykrywania przeglądarki, aby wiedzieć, czy SVG lub Canvas są obsługiwane.

  • March 1, 2018