Javascript canvas: descriere, caracteristici, exemple, recenzii

O pânză este creată cu ajutorul tag-ului canvas, dar când vorbesc despre aceasta, se referă la API, care include un set de funcții pentru desenare, linii, dreptunghiuri, cercuri, arcuri, scalare, transformare a elementelor grafice.

În cazul unei pagini web canvas, aceasta este o zonă dreptunghiulară pentru harta de biți, în care fiecărei coordonate i se atribuie o culoare. Canvas JavaScript nu creează obiecte vectoriale în stilul altor medii, cum ar fi SVG sau Flash, ci doar obiecte raster ca un desen.

De fapt, puteți încărca o imagine într-un Canvas și să-i manipulați pixelii unul câte unul. Serviciul a fost recent încorporat în HTML și nu este acceptat de browserele mai vechi. Acestea pot oferi conținut alternativ sub forma unei imagini fixe sau a unui text explicativ.

Tehnologia Canvas versus Flash

Canvas din JavaScript este un element HTML5 standard gestionat de browserele moderne. Flash este o tehnologie de companie care necesită instalarea unui plugin. În prezent, majoritatea browserelor au instalat plug-in-ul Flash, astfel încât cele care nu suportă Canvas funcționează în continuare. Cu toate acestea, dinamica sugerează că acest lucru se va schimba foarte curând, deoarece noile platforme nu mai lucrează cu "Flash".

Cu toate acestea, majoritatea profesioniștilor din domeniul graficii consideră că este mai ușor și mai rapid să lucreze cu Flash decât cu Canvas, deoarece acesta dispune de un mediu de design grafic avansat (Adobe Flash CS6), iar procesul de creare a graficii Canvas JavaScript este ceva mai dificil. Acest lucru ar trebui să se schimbe odată cu apariția cadrelor de tip hârtie.js. Rețineți, totuși, că noul serviciu este gratuit și deschis, astfel încât nu este nevoie să cheltuiți bani pe o licență. Flash este deținut de Adobe. Acest lucru explică faptul că astăzi încă se mai creează jocuri complexe cu el.

Dacă aveți nevoie să folosiți grafică în mai multe rezoluții, tehnologia vectorială "Flash" Mai eficient decât bitmap Canvas. Dar pentru majoritatea graficii web, Canvas se încarcă mai repede. Flash necesită mai multe resurse pentru a rula, astfel încât pe dispozitivele mobile Canvas JavaScript are un avantaj semnificativ. Canvas vă permite să creați tot felul de grafice, de la linii drepte la jocuri interactive, și vă oferă, de asemenea, posibilitatea de a edita imagini, de a schimba tonurile și marginile.

ID-ul atributului

Canvas este un element HTML care vă permite să creați grafice și scripturi de animație în mod dinamic. Aplicațiile sale au o gamă largă de utilizări: jocuri, interfețe, editoare grafice, efecte dinamice și aplicații 3D.

Principalul avantaj al serviciului este că nu necesită niciun plug-in, ci doar un browser care suportă JavaScript html5 Canvas: Safari, Chrome, Firefox, Opera și Internet Explorer.

De exemplu, pentru a desena două dreptunghiuri de culori diferite, se utilizează mai multe funcții API cu JavaScript. Mai întâi rezervați spațiul de pânză pe pagină folosind tag-ul HTML, apoi desenați formele. Amplasarea elementului JavaScript html5 Canvas este prezentată în fotografie.

ID-ul atributului

Dacă doriți, plasați alte elemente, cum ar fi un stil, pentru a specifica atributele tabelului și pentru a defini aspectul acestora.

În continuare, verificați compatibilitatea browserului cu Canvas, scrieți codul.

Codificare

Utilizați getElementById () pentru a obține elementul de pagină, care este transmis ca parametru Canvas. Apoi, accesați contextul 2D al canvas-ului și executați câte metode aveți nevoie în context pentru a desena elementele de animație JavaScript Canvas.

În continuare vom scrie codul de execuție complet.

Cod de execuție

Imagine a dreptunghiului

Pentru a desena un simplu dreptunghi gri de 450 pe 350 de pixeli care să ocupe întreaga pânză, scriem codul.

Imaginea unui dreptunghi

Datele privind lățimea și înălțimea definesc dimensiunea suprafeței. Poziția pe care această pânză o ocupă în cadrul web este determinată de locul în care este scris elementul HTML. Un exemplu de Canvas JavaScript, poate fi plasat în interiorul unui tabel sau în interiorul unui container plutitor.

În cazul în care platforma nu suportă stilul, va apărea textul "Your browser does not support Canvas". Apoi se plasează o etichetă de captură care creează pânza. Pentru a putea face referire la un anumit element în codul Javascript, este convenabil să îi dăm un identificator, de exemplu id = miCanvas.

Odată ce elementul este creat, codul JS care face imaginile este executat. Acest lucru trebuie făcut după ce este creată pânza. O modalitate de a face acest lucru este de a utiliza proprietatea onLoad. Odată ce pagina este încărcată, se execută drawCanvas ().

Prima, care este necesară de făcut este să obținem nodul DOM folosind instrucțiunile: var canvas = document.getElementById (`miCanvas`) și treceți identificatorul elementului canvas ca parametru. Apoi, obțineți un obiect context JavaScript Canvas text:var context = canvas.getContext (`2d`).

Există două contexte posibile: 2d pentru un desen în două dimensiuni și webgl pentru un desen în trei dimensiuni. Odată ce aveți un obiect de context, puteți aplica toate funcțiile și proprietățile asociate cu acesta.

Sistem de coordonate

Originea este (0,0), cu coordonata X mergând spre dreapta și coordonata Y mergând în jos, spre deosebire de sistemul de coordonate tradițional. Obiectul este plasat în raport cu originea, de exemplu, un dreptunghi la (90,70). Dimensiunea pânzei de pânză este de 450 lățime și 350 înălțime pentru linia: context.fillRect (0, 0, 450, 350). Acest lucru va desena o formă umplută cu colțul din dreapta sus la (0,0), lățimea 450 și înălțimea 350, ceea ce înseamnă că va ocupa întreaga pânză a exemplului. Pentru a desena un dreptunghi fără umplutură, aplicați: strokeRect (x, y, width, height).

Canvas nu are funcții definite pentru desenarea poligoanelor, inclusiv a triunghiurilor și pentagonelor (cu excepția dreptunghiului). Modul în care se lucrează cu Canvas este de a desena forme sau trasee. Pentru a construi o formă, inițializați mai întâi beginPath (), apoi plasați cursorul în punctul de pornire prin aplicarea moveTo (x, y). Acest lucru va crea un formular cu diferite opțiuni de desen.

Liniile, arcele și curbele pot fi desenate cu: stroke(), care desenează o formă deschisă sau închisă fără umplutură. Dacă ultimul punct se potrivește cu primul, forma va fi închisă. Fill () desenează o formă închisă cu o umplutură. În cazul în care a fost deschis, funcția creează o linie dreaptă de la ultimul punct până la punctul de plecare pentru a-l completa.

Instrumentul de creare a unei linii drepte ClosePath

Folosiți closePath () pentru a crea o linie dreaptă de la ultimul punct până la punctul de plecare.

Crearea unei linii drepte

Puteți executa codul anterior copiindu-l și lipindu-l în căsuță și apoi apăsând butonul "Show code written" (Afișează codul scris).

Desenarea Canvas Javascript

Există trei metode de bază pentru reprezentarea curbelor:

  • Arcos, arcuri.
  • Curbe de Bezier, curbe de Bezier.
  • Curvas cuadráticas, curbe pătratice.

Amplitudinea arcului de cerc va merge de la unghiul de pornire la unghiul final. Acestea se măsoară în radiani. Dacă parametrul direcție are o valoare logică adevărată, arcul va merge în sens invers acelor de ceasornic.

Curbe Bezier - sunt de tipul linii, care este foarte sunt adesea utilizate în desene și necesită un punct de pornire, un punct final și câteva puncte de control. Cel mai bun mod de a învăța curbele Bezier este să le desenezi cu programe precum Illustrator sau Inkscape (gratuit). De asemenea, puteți utiliza simulatorul bezierCurveTo (cp1x, cp1y, cp2x, cp2y, x, y), unde cp1x, cp1y sunt coordonatele primului punct de control, cp2x, cp2y sunt coordonatele celui de-al doilea, iar x și y sunt coordonatele punctului final al curbei.

O curbă pătratică este similară cu cele anterioare, dar are un singur punct de control - quadraticCurveTo (cp1x, cp1y, x, y), unde cp1x, cp1y sunt coordonatele primare, iar x și y sunt coordonatele finale.

Curbe Bézier

Combinație de forme și stiluri

Pentru a desena o formă, inițializați funcția beginPath (), plasați cursorul (moveTo (x, y)) pentru a crea formele. Pentru a o închide opțional, utilizați closePath (). Desenul cu umplutură () se face fără umplutură și linie. Acest proces poate fi repetat de câte ori este necesar. Procesul este similar cu cel de desenare cu creionul pe o bucată de hârtie. De fiecare dată când terminați de trasat și luați creionul de pe hârtie pentru a-l plasa într-o nouă poziție, moveTo (x, y) face același lucru.

O excepție de la formula generală de construcție o constituie funcțiile de desenare a dreptunghiurilor [strokeRect (x, y, lățime, înălțime) și fillRect (x, y, lățime, înălțime)], care încep cu moveTo (x, y) și se termină cu stroke sau fill. În acest caz, toate funcțiile imaginii sunt combinate împreună. De fiecare dată când formularul este inițializat, Canvas deschide o structură de date sub forma unei liste, care este completată cu instrucțiunea atunci când se execută stroke () sau fill ().

Desenarea unui gradient liniar

Funcția de creare Canvas JavaScript: createLinearGradient (x_ini, y_ini, x_fin și_fin). Oferă un gradient liniar, folosind o linie definită de un punct de pornire (x_ini, y_ini) și un punct final (x_fin, y_fin). Direcția acestei linii arată mișcarea gradientului. De exemplu, dacă doriți ca gradientul să meargă în direcția verticală, creați o linie verticală. Își definește prima culoare. Lungimea indică intensitatea gradientului. În cazul în care se folosesc programe precum Photoshop, operațiunea este similară. Pentru a termina definirea gradientului, culorile care formează gradientul sunt indicate cu ajutorul funcției: addColorStop (position, colour).

Parametrul de poziție determină de unde se aplică culoarea specificată în cel de-al doilea parametru. Poziția este exprimată printr-un număr de la zero la unu. Cel puțin două culori diferite sunt necesare pentru formarea gradientului. De exemplu, dacă doriți să înceapă în roșu și să se termine în alb:

  • addColorStop (0, "red");
  • addColorStop (1, "alb").

Pentru a desena gradiente radiale Canvas are o funcție: createRadialGradient (x1, y1, r1, x2, y2, r2).

Acesta definește un gradient radial bazat pe două cercuri, fiecare cu poziția centrului său (x, y) și raza (r). Dacă centrul ambelor cercuri este același, efectul va fi uniform, în timp ce celălalt va crea un efect de sferă care depinde de rază.

Lucrul cu imagini

Exemple Javascript Canvas

Canvas poate lucra cu imagini în cele mai frecvente formate (GIF, JPEG, PNG) și dispune de funcții de control - dimensiune și rotație la nivel de pixel. Vă oferă posibilități mari de a vă prelucra desenele cu Canvas. Puteți aplica imaginea ca fundal, miniatură, zoom și schimba culoarea.

Primul pas în lucrul cu Canvas este să încărcați o fotografie. Există în mai multe moduri pentru a face acest lucru. Până la încărcarea completă, utilizatorul nu poate interacționa cu el. Cele mai frecvente două modalități de încărcare sunt:

  1. Un obiect în Javascript. Folosind o nouă imagine, creați o instanță a obiectului Image, apoi dați-i un nume și începeți să o utilizați după încărcare.
  2. Imaginea paginii web. utilizați o etichetă pentru a încărca imaginea din corpul site-ului și dați-i un identificator, cum ar fi un nume, astfel încât să o puteți accesa din documentul pe care îl utilizați.getElementById tag.

Dacă doriți ca acesta să fie vizibil numai după procesare, utilizați proprietatea hidden din. Există și alte modalități de a o încărca, de exemplu, utilizând imaginea pe care ați creat-o într-un alt obiect. De asemenea, poate fi încărcat folosind metoda data: url. Când încărcarea este completă, puteți desena folosind drawImage, care acceptă mai multe formate: drawImage (image, x, y). Desenați o imagine pe pânză prin plasarea colțului din stânga sus la (x, y).

JavaScript Canvas drawimage (imagine, x, y, lățime, înălțime) vă permite să scalați imaginea. Primii trei parametri au aceeași valoare ca în cazul precedent. Lățimea și înălțimea definesc dimensiunea (în pixeli) în care va fi afișat graficul. Dacă aspectul este mai mare decât originalul, imaginea este mărită, iar dacă este mai mică, imaginea este miniaturizată. Dacă doriți ca imaginea să fie nedeformată, trebuie să păstrați raportul dintre lățime și înălțime al imaginii originale.

DrawImage (image, x1, y1, width1, height1, x2, y2, width2, height2) redimensionează o parte din imagine. Cu această funcție, doar conținutul cadrului colorat va fi afișat pe pânză, acesta fiind inclus ca fundal. Această funcție ia o parte din imaginea originală definită ca x1, y1 (lățime 1, înălțime 1) și desenează această parte într-o poziție diferită (x2, y2) și la o scară diferită (lățime 2, înălțime 2). În acest caz, creați o zonă mărită, deoarece valorile lățimii și înălțimii 2 sunt mai mari decât 1.

Un exemplu de utilizare a ClearRect

ClearRect desenează un dreptunghi transparent pe pânză. Spre deosebire de funcțiile rect, strokeRect sau fillRect, care reprezintă o figură colorată. Acest lucru nu trebuie confundat cu desenarea unui dreptunghi alb.

Imaginea de fundal este setată prin CSS, iar pe pânză este desenat un dreptunghi negru. Dacă îl acoperiți cu un fundal alb, cel transparent va fi ascuns. În schimb, cel mai bine este să folosiți clearRect pentru a desena un dreptunghi "curat" JavaScript Canvas pe pânză, permițând astfel ca operele de artă să strălucească prin ea.

Un exemplu de utilizare a clearRect

Puteți, de asemenea, să curățați pânza prin stabilirea lățimii sau înălțimii - este suficient să le stabiliți pe pânza prin atribuirea unei noi valori:

  • // pânză.lățime = 600;
  • pânză.lățime = canvas.lățime.

Aceasta resetează matricea de transformare.

Canvas JavaScript decupează toți pixelii dintr-un dreptunghi dat (x, y, w, h) în negru transparent. Funcția clearCanvas () poate fi utilizată pentru a șterge cu precizie desenul și textul din pânză. Această funcție este utilă atunci când doriți să eliminați întregul context pentru a adăuga noi desene pe un layout de pânză gol. Ar trebui să se ștergă de fiecare dată când se mișcă mouse-ul și se trasează o nouă linie.

Atunci când se face clic pe butonul "Set Number", se afișează pe pânză un număr aleatoriu între 1 și 100. Butonul "Șterge" scoate totul din context, astfel încât numerele nu sunt afișate una peste alta. Acest lucru se va întâmpla dacă apăsați din nou butonul "set number".

Sintaxa în acest caz este: context.clearRect(x, y, w, h).

Acesta este un exemplu de cod pentru desenarea unui dreptunghi umplut în JavaScript Canvas folosind fillRect, care trebuie să elimine partea centrală. FillRect aplică lățimea și înălțimea pânzei, iar clearRect utilizează un procent din aceste valori pentru a crea cadrul. Acest exemplu prezintă doar metoda JavaScript canvas clear. X, y, lățimea și înălțimea dreptunghiului curățat, afișate în procente.

Secvență clară

Secvența de curățare:

  • Încărcați pânza și trageți linii pe ea.
  • Apelarea clearRect ().
  • Redimensionați prin manipularea lățimii și înălțimii elementelor canvas și div cu un raport de pixeli de 1: 1.

Feedback-ul utilizatorului

Canvas face o treabă excelentă în integrarea multor furnizori terți precum Flipgrid, Padlet și Storyline. Prin urmare, este foarte util pentru designer.

În feedback-ul utilizatorilor cu privire la funcționalitatea serviciului să lucreze cu Canvas JavaScript raportează următoarele:

  • Folosește un editor de text bogat simplu care facilitează crearea de text, inserarea de imagini și videoclipuri, îmbunătățirea textului cu ajutorul editorului HTML. Acest lucru oferă designerului posibilitatea de a crea mai mult decât doar text pe pagină.
  • Funcționează bine cu furnizori terți, integrându-i direct în Canvas. Această proprietate permite utilizarea unor instrumente suplimentare, cum ar fi McGraw-Hill Connect, Kaltura, Box, Office 365, Google Drive și multe altele.
  • Canvas are o abordare în cascadă a designului organizațional la nivelul contului de bază sau în cadrul oricărui alt proiect suplimentar. Fiecare subcont moștenește atributele subcontului său "părinți". Gestionarea tuturor acestor elemente este incredibil de ușoară cu ajutorul importului de fișiere SIS .csv. Instructure menține documentația serviciului la zi.
  • Pânza este sistem de gestionare a învățării, Poate fi folosit de o organizație mică, care oferă doar câteva lecții la nivel local, sau de o organizație gigant care oferă mii de lecții cursuri pentru sute de mii de studenți din întreaga lume.
  • Scalabilitatea instanței Canvas este foarte puternică. Serviciul este intuitiv și foarte ușor de personalizat.
  • Oferă o platformă flexibilă unde utilizatorul poate împărtăși experiența cu alții. Potrivit pentru integrarea cu multe servicii utile, cum ar fi Drive. Este destul de util, deoarece puteți utiliza doar funcțiile de care aveți nevoie.
  • Integrarea cu Drive și Gmail poate fi mai intuitivă.
  • Canvas are un serviciu clienți excelent. Au fost adăugate noi produse și îmbunătățiri.
  • Canvas este foarte flexibil, permițând dublarea sarcinilor individuale.
  • Canvas se integrează bine cu Crocodoc pentru comentarii și prezentări online și are capacități excelente de import.

O caracteristică importantă pe care utilizatorii ar dori să o vadă este posibilitatea de a adnota PDF-uri sau alte documente pe platforma web Canvas. Nu este disponibil în prezent în versiunea web.

Articole pe această temă