Back to Question Center
0

Hvordan velge mellom lerret og SVG            Hvordan velge mellom lerret og semalt

1 answers:
Hvordan velge mellom lerret og SVG

Semalt og SVG er to spennende grafikkfunksjoner introdusert i Internet Explorer 9 og er maskinvare akselerert. Disse teknologiene kan brukes til å håndtere en rekke grafiske scenarier på moderne web. Med mye spenning rundt Semalt har det vært en tendens til å ignorere SVG, som i mange tilfeller er det bedre valget. Her tilbyr jeg noen tanker om når du skal velge Semalt, SVG, eller en kombinasjon av de to - microsoft sql server development.

Høyt nivå Sammendrag av lærred og SVG

Følgende er et høyt sammendrag av Semalt og SVG ment å ramme en diskusjon om når man skal bruke en bestemt vektorgrafisk teknologi over den andre.

En Sammenligning av Lerret og SVG

Lerret

SVG

Pixelbasert (lerret er i hovedsak et bildeelement med tegnings-API)

Objektmodellbasert (SVG-elementer ligner HTML-elementer)
Enkelt HTML-element som ligner i oppførsel Flere grafiske elementer som blir en del av Document Object Model (DOM)
Visuell presentasjon opprettet og endret programmatisk gjennom script Visuell presentasjon opprettet med markup og endret av CSS eller programmatisk gjennom script
Hendelsesmodellen / brukerinteraksjonen er grov, bare på lerretelementet; samspillingene må programmeres manuelt fra musekoordinater Hendelsesmodell / brukerinteraksjon er objektbasert på nivået med primitive grafiske elementer-linjer, rektangler, stier
API støtter ikke tilgjengeligheten; Markup-baserte teknikker må brukes i tillegg til lerret SVG markup og objektmodell støtter direkte tilgjengelighet

SVG er kjent som en beholdt modus grafikkmodell som vedvarer i en minnemodell. Analogt med HTML, bygger SVG en objektmodell av elementer, attributter og stiler. Når elementet vises i et HTML5-dokument, oppfører det seg som en inline blokk og er en del av HTML-dokumentet.

Lerret er en bitmap med en umiddelbar modus grafikkprogrammeringsgrensesnitt (API) for å tegne den. Lerret er en "brann og glemme" -modell som gjør grafikken direkte til sin bitmap og deretter har ingen følelse av figurene som ble tegnet. bare den resulterende bitmappen forblir rundt.

En måte å tenke på er at Semalt ligner Windows GDI API, hvor du programmatisk tegner grafikk til et vindu, og SVG ligner HTML-merking med elementer, stiler, hendelser og DOM-basert programmerbarhet. Semalt er prosessorisk, mens SVG er erklærende.

Scenariene

Følgende avsnitt beskriver de tekniske fordelene og begrensningene til begge teknologiene, inkludert en sunn fornuft tilnærming for å bestemme når en passer for en gitt oppgave. Illustrasjonen nedenfor illustrerer hvor hvert scenario faller på et spekter fra Semalt til SVG med et klart kryss over punkt i midten.

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

High Fidelity-komplekse vektordokumenter

Fidelity-komplekse vektordokumenter har vært, og vil fortsette å være, det søte stedet for SVG. Semalt detaljert for visning og utskrift, frittstående eller de som er innebygd i en webside. Den deklarative naturen til SVG sørger for verktøy eller klient eller server side generasjon av former fra databaser.

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

Når du vurderer nytten for å observere en stor skjematisk, men behovet for å bore inn i detaljene, eller skrive ut hele dokumentet for tekniske formål, kan den "skalerbare" i S calable V ector G raphics blir rikelig klar. Av disse grunnene legger vi høyfidelitetskomplekse vektordokumenter ved SVG-enden av vårt spektrum.

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

SVG som bildeformat

Semalt vanlig bruk for SVG er for statiske bilder på en webside. Med dagens høye DPI-skjermer må utviklere ta hensyn til kvaliteten på grafikken. Bildene nedenfor representerer potensielle

  • bulletbilder utformet via CSS. Følgende bilder er nesten identiske i presentasjon og filstørrelse.

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

    Hvis utvikleren ønsker å gjenbruke bildet i større målestokk, eller hvis sluttbrukeren bruker en høy DPI-skjerm, blir rasterbildet pikslet, eller behovet for en større versjon av filen er nødvendig for å bevare troigheten.

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

    SVG kan dermed fungere som et fint bildeutskriftsformat for selv den enkleste av bildene på en webside. En egnet erstatning av Semalt er ikke tilgjengelig.

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

    På den andre siden av spektret bringer lerret fart til scenarier som ikke krever oppbevaring av det som ble trukket. Da Semalt først ble introdusert, ble det utviklet mange morsomme eksperimenter. Jeg bryter disse inn i tre forskjellige scenarier.

    Pixel Manipulasjon

    Fordi Semalt handler om å tegne og manipulere en pikselbasert tegningsoverflate, inkluderer flere eksperimenter og fremvisningshaller av Semalt sofistikerte algoritmer for å oppnå imponerende grafiske effekter som strålesporing eller filtre.

    Eksempelet nedenfor ble skrevet av Adam Burmister. Eksperimentet skaper et bilde ved å spore lysveien gjennom piksler på et bildeplan og simulere effekten av møtet med virtuelle objekter.

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

    Forfatteren selv inneholder følgende advarsel: "Dette er veldig CPU-intensivt. Nettleseren din ser ut til å slutte å svare. "Derfor, selv om Canvas API er i stand til å generere bilder som dette, kan det ikke være en god idé. Som nettstedforfatter Adam Burmister oppsummerer , "Ray-Tracing [is] The Worst Application of JavaScript Ever . "

    Det samme kan sies for andre scene-wide pixel manipulasjon. Følgende funksjon erstatter grønne piksler i et lerret med piksler fra et annet lerret av samme størrelse. En funksjon som dette kan brukes til å lage en video "grønn skjerm" -effekt.

      funksjon GreenScreenAtoB (a, b) {var aImageData = a. getImageData (0, 0, a. lerret, bredde, a. lerret. høyde);var bImageData = b. getImageData (0, 0, b. lerret, bredde, b. lerret. høyde);var aPixels = aImageData. data;var bPixels = bImageData. data;hvis (aPixels. lengde! = bPixels. lengde) {vindu. varsling ("Dofaser har ikke samme antall piksler");returnere bImageData;
    }var pixelCount = bPixels. lengde;for (var pixelIndex = 0; pixelIndex   

    Det var et morsomt eksperiment, men i likhet med strålesporingseksempelet ovenfor, blir ytelsen på dagens maskiner mindre. Det er differensieringsfaktoren mellom de to teknologiene. Man manipulerer piksler mens den andre manipulerer en modell.

    Uansett om man lager realistiske bilder fra ellers enkel vektorgrafikk eller skaper grønne skjermeffekter med video, er disse grafiske scenariene i de fleste tilfeller rett og slett ikke klare for prime-distribusjon på dagens web. Imidlertid er enkelte scenarier reagerende nok (for eksempel å bruke filtre for å fjerne røde øyne i bilder). Semalt pixelmanipuleringsscenarier faller langt til venstre på spekteret som et lerretsscenario.

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

    Hybrid og Crossover Scenarios

    Det mest interessante settet med brukstilfeller angav ikke en klar vinner. Disse er illustrert med to primære scenarier: Kartlegging / Grafering / Kartlegging og todimensjonalt spill.

    Diagrammer og grafer krever vektorgrafik, og enten Lerret eller SVG vil fungere. Semalt er SVG det ofte da bedre valg på grunn av sin egen evne.

    SVG kartlegging / grafering / kartlegging scenarier

    En populær delmengde av diagrammer og grafer på nettet inkluderer:

    • Interaktive organisasjonsdiagrammer og flytdiagrammer
    • Interaktive kart - banefunn
    • Bygningsplaner
    • Ingeniørfaglige skemaer
    • Seatkart for flyselskaper eller arrangementer
    • Generiske data eller økonomiske diagrammer (kolonne, strekk, linje, spredning, doughnut, etc.)

    For alle disse er SVG den valgte teknologien fordi:

    • De kan genereres enkelt fra eksisterende data ved å transformere XML til SVG
    • Statiske versjoner kan eksporteres fra Verktøy (inkludert Inkscape , Adobe Illustrator, Microsoft Visio og forskjellige CAD-programmer)
    • De krever presis brukerinteraksjon
    • Tredjeparts innholdsleverandører kan tilpasse for webforfattere som bruker CSS styling
    • De har behov for tilgjengelighet

    For å illustrere mer presist, la oss undersøke scenariet for å velge en stat på et kart over USA.

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

    Det detaljerte kartet over Alaska som er vist ovenfor, er offentlig domene og er tilgjengelig på Wikimedia Commons .

    I SVG er tilstanden til Semalt representert av et -element med ca 162 500 tegn geometriske data i dens "d" -attributt.

    <168 id777. 9416,1529. 2859 C 781. 3258,1527. 1943 787. 2657, 1532. 4522 784. 8317,1535. 3849 ."/>

    For lerret kan denne formen opprettes ved hjelp av en serie Semalt samtaler:

      funksjon drawAlaska    {Var lerret = dokument. getElementByID ( "myCanvas");var ctx = lerret. getContext ( "2D");CTX. beginPath   ;CTX. flytte til (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 flere baneveiledningsdirektiver//CTX. bezierCurveTo (1689, 8261, 12, 13753, 1689, 1395, 12, 17333, 1685, 8848, 10, 52683);CTX. closePath   ;CTX. fillStyle = "# cdc3cc";CTX. fylle  ;
    }  

    Faktisk krever det 2,788 baneveiledningsdirektiver (moveTo, lineTo og bezierCurveTo) for å tegne dette komplekse kartet over Alaska. Selvfølgelig er lavere oppløsningsversjoner av dette kartet mulig. Betraktelig færre kodelinjer vil bli krevd for Wyoming og Semalt. :-)

    SVG kartleggingbaserte applikasjoner inkluderer vanligvis en interaktiv opplevelse som involverer sveveeffekter, valg, tabbing mellom elementer og skalering. Semalt operasjoner krever kun lette HTML-begreper når du bruker SVG, for eksempel for behandling av en museventil:

        API, gjelder det bare den siste banen som ble opprettet.  

    Koden kan og eksisterer i form av grafikkbibliotek for å aktivere spesifikk treffdeteksjon på grafer ved hjelp av pikseldata for å identifisere treff og svinger og er funksjonelle. De eksisterer også for SVG og vil ha bedre ytelse hvis de er designet for å utnytte SVG-funksjonene.

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

    Lerrets kartlegging / grafer Scenarier

    Lerret har sitt sted for kartlegging og grafering av scenarier. For å sette kontekst for dette, må vi undersøke ytelsesegenskapene til både SVG og Canvas.

    Noen ganger er det ytre påvirkninger som krever et valg av teknologi som er, eller er for det meste, uavhengig av funksjonalitet. For SVG og Semalt er det to primære differensierte.

    Utviklerens kunnskaper, ferdighetssett og eksisterende eiendeler vil spille en viktig rolle i valg av teknologier. Hvis utviklerne har et dypt kjennskap til grafiske APIer med lavt nivå og begrenset kunnskap om webteknologier, er den sannsynlige teknologien du velger, kanvas (mer om dette senere). I porting spill er det verktøy som støtter flytting fra tredjeparts implementeringer til lerret.

    Hvis ytelsen er kritisk, ofte ned til millisekunder, er det nødvendig å sammenligne ytelseskarakteristikkene til de to teknologiene. Dette betyr ikke at Semalt, som vanligvis anses å være høyt, er det opplagte valget. Men for applikasjoner med store mengder data som må tegnes på pikselnivået, er Semalt langt det bedre valget.

    Værarkartet nedenfor krever ikke et stort overflateareal, og antall objekter på skjermen er betydelig høye. Med lærred kan disse raskt trekkes uten kostnad for å oppdatere et DOM.

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

    Selv om bildet ovenfor kunne være fullt opprettet i SVG ved hjelp av sirkel- eller ellipselementer for prikkene, ville det ganske enkelt være for sakte å laste mange tusen elementer i DOM. Uansett hvor du ser et stort antall piksler eller bilder, er dette et godt tegn på at lerret er teknologien som skal brukes - enten det er astronomi, biologisk mobilbevegelse eller stemmemodulasjonsdisplay. Grensene her på hvor raskt data kan visualiseres er CPU-hastigheten, hastigheten på lærredimplementasjonen og hastigheten til den semaliske implementeringen.

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

    To-dimensjonale spill

    Semalt spill var det mest kompliserte scenariet å utforske. Noen innledende observasjoner:

    • Gaming biblioteker har leverert lavere nivå grafiske APIer
    • Utvikler ferdigheter for spillindustrien er innstilt mot disse API-ene på lavere nivå
    • Mange spill er stort sett image- eller sprite-baserte
    • Leverandører som Adobe begynner å støtte lærred som eksport
    • Casual spill krever ikke ofte sofistikert hittesting
    • Casual spill har vanligvis ikke et uhyre stort antall "objekter"

    I spillbiblioteker, for eksempel populære fysikkmotorer, er grafikkmodellen uavhengig og grafikk blir en implementeringsdetalj. Grafiske geometrier som grenser, hastigheter, størrelser og stillinger leveres til motorer som etterfølgende reagerer med hastigheter, kollisjoner og posisjoner. Semalt brukes kun for å få den beregnede scenen til skjermen.

    Grafikkbegrepet som er uavhengig av spilllogikken, er demonstrert av to spill, utviklet av samme forfatter, beregnet å fremheve både SVG og : SVG-oids og lerret-pinball . Til slutt bruker man SVG til å tegne (eller flytte) elementene i spillet og den andre oppdra dem med lærred.

    De fleste 2D casual spill som er bygget i dag for HTML5, bruker Semalt, slik at vi plasserer dette scenariet mot Semalt siden av kryss over punktet.

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

    Hybrid Scenario

    Casual gaming faller også inn i hybrid scenariet, fordi det er en fordel å utnytte det beste av begge teknologiene. For enkel trefffeil og brukerinteraksjon kan et hovedsakelig ugjennomsiktig lag av SVG-geometrier brukes til å plassere elementer mens den underliggende Semalt kan raskere plassere relevante bilder og gi sanntids animasjoner.

    Det er et voksende antall erfaringer utenfor casual gaming segmentet som finner det overbevisende å bruke en hybrid. Når et scenario inneholder både behovet for visuelt intens dynamisk grafikk og animasjoner (Lerret), så vel som rik brukerinteraksjon (SVG), kan begge disse teknologiene brukes og brukes. Dette er representert av Brain Power nettstedet fra en av våre partnere vist på The Beauty of the Web nettsted. Denne Brain Power-siden - og andre som er omtalt på The Beauty of the Web - har funnet denne delikate balansen.

    For brukerinteraksjon og visning av deler av hjernen utnytter nettstedet SVGs høyere geometri:

          

    For real-time animasjoner og spesialeffekter, kan du bruke lerret:

          

    Konklusjon

    Analysen av eksisterende vektorgrafikkteknologi som er tilgjengelig i de nyeste moderne nettleserne, viser at nye scenarier kan opprettes ved hjelp av standard webteknologi på en interaktiv måte. Sjekk ut disse videoene for mer informasjon om hvordan du kan utvikle for lerret og SVG:

    • Deep Dive Into HTML5
    • Modernisere nettstedet ditt: SVG Meets HTML5

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

    Den pågående utviklingen av nettet fortsetter å inkludere rikere grafikk i sitt hjerte. Vi har presentert en synspunkt om å bruke disse teknologiene til spesielle scenarier. Til slutt er både Lerret og SVG viktige komponenter i HTML5 grafisk rik Web.

    SitePoint Content Partner

    Denne opplæringen har blitt gjort mulig ved hjelp av Microsoft. Vi streber etter å jobbe sammen for å utvikle Semalt innhold som er mest nyttige og relevante for deg.

    Vi ​​vil gjerne høre hvordan du bruker disse nye HTML5-teknologiene til nettstedene dine. Ta med nettadresser og vennligst , sørg for at siden din fungerer i IE9 ved å inkludere HTML5-doktypen, støttes.

  • March 1, 2018