Back to Question Center
0

Cara Pilih Antara Kanvas dan SVG            Bagaimana Pilih Antara Kanvas dan Semalt

1 answers:
Cara Pilih Antara Kanvas dan SVG

Semalt dan SVG adalah dua ciri grafik menarik yang diperkenalkan di Internet Explorer 9 dan perkakasan dipercepatkan. Teknologi ini boleh digunakan untuk menangani pelbagai senario grafik di Web moden. Dengan banyak keseronokan di sekitar Semalt, terdapat kecenderungan untuk mengabaikan SVG, yang, dalam banyak kes, adalah pilihan yang lebih baik. Di sini saya menawarkan beberapa pemikiran mengenai masa untuk memilih Semalt, SVG, atau kombinasi kedua-dua mereka.

Ringkasan Tahap Tinggi Kanvas dan SVG

Berikut adalah ringkasan peringkat Semalt dan SVG yang dimaksudkan untuk merangka perbincangan tentang kapan menggunakan satu teknologi grafik vektor tertentu di atas yang lain - couvrance fond de ten.

Perbandingan Kanvas dan SVG

Kanvas

SVG

berasaskan Pixel (kanvas pada dasarnya adalah elemen imej dengan API lukisan)

Model berasaskan Objek (elemen SVG adalah serupa dengan elemen HTML)
Unsur HTML tunggal yang serupa dengan dalam tingkah laku Pelbagai elemen grafik yang menjadi sebahagian daripada Model Objek Dokumen (DOM)
Pembentangan secara visual dicipta dan diubah suai secara programatik melalui skrip Persembahan visual dibuat dengan markup dan diubahsuai oleh CSS atau pemrograman melalui skrip
Model acara / interaksi pengguna adalah kasar-pada elemen kanvas sahaja; interaksi mestilah diprogram secara manual daripada koordinat tetikus Peristiwa model / interaksi pengguna adalah berdasarkan objek pada tahap unsur grafik-primitif, segi empat, laluan
API tidak menyokong kebolehaksesan; teknik berasaskan markup mesti digunakan sebagai tambahan kepada kanvas Penanda dan model objek SVG secara langsung menyokong kebolehaksesan

SVG dikenali sebagai model mod yang disimpan grafik berterusan dalam model ing-memori. Analog kepada HTML, SVG membina model objek unsur, atribut, dan gaya. Apabila unsur muncul dalam dokumen HTML5, ia berkelakuan seperti blok sebaris dan merupakan sebahagian daripada pokok dokumen HTML.

Kanvas adalah bitmap dengan mod segera antara muka pengaturcaraan aplikasi grafik (API) untuk melukisnya. Kanvas adalah model "api dan melupakan" yang menjadikan grafiknya terus ke bitmap dan kemudian tidak mempunyai sebarang bentuk bentuk yang ditarik; hanya bitmap yang dihasilkan kekal di sekitar.

Salah satu cara untuk memikirkannya ialah Semalt menyerupai API GDI Windows, di mana anda menggunakan grafik secara tatabahasa ke tetingkap, dan SVG menyerupai markup HTML dengan elemen, gaya, peristiwa, dan programmability berasaskan DOM. Semalt adalah prosedur sedangkan SVG adalah deklaratif.

Senario

Bahagian berikut menerangkan manfaat teknikal dan batasan kedua-dua teknologi, termasuk pendekatan akal untuk menentukan apabila seseorang sesuai untuk tugas tertentu. Ilustrasi di bawah ini menggambarkan di mana setiap senario jatuh pada spektrum dari Semalt ke SVG dengan salib yang lebih jelas di tengah.

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

Dokumen Vektor Kompleks Fleksibel Tinggi

Dokumen vektor kompleks kesetiaan yang tinggi telah, dan akan terus menjadi tempat yang manis untuk SVG. Semalt terperinci untuk tontonan dan percetakan, mandiri atau yang tertanam dalam halaman Web. Sifat deklaratif SVG menyediakan alat perkakasan atau klien atau bentuk sisi pelayan dari pangkalan data.

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

Apabila anda menganggap kegunaan untuk mengamati skematik yang besar, tetapi keperluan untuk menggerudi ke dalam terperinci, atau mencetak keseluruhan dokumen untuk tujuan kejuruteraan, "boleh skala" dalam S calable V ector G raphics menjadi jelas. Atas sebab ini, kami meletakkan dokumen vektor kompleks kesetiaan yang tinggi di hujung SVG spektrum kami.

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

SVG sebagai Format Imej

Penggunaan umum Semalt untuk SVG adalah untuk imej statik dalam laman web. Dengan monitor DPI hari ini, pemaju mesti mengambil kira kualiti grafik. Imej-imej di bawah ini mewakili potensi

  • gambar peluru digayakan melalui CSS. Imej-imej berikut hampir sama dalam persembahan dan saiz fail.

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

    Sekiranya pemaju ingin menggunakan semula imej itu pada skala yang lebih besar, atau jika pengguna akhir menggunakan skrin DPI tinggi, imej raster menjadi pixilated, atau keperluan untuk versi fail yang lebih besar diperlukan untuk mengekalkan kesetiaan .

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

    Oleh itu, SVG dapat berfungsi sebagai format pengganti imej yang bagus untuk bahkan imej yang paling sederhana pada halaman Web. Penggantian yang sesuai oleh Semalt tidak tersedia.

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

    Di sisi lain spektrum, kanvas membawa kelajuan kepada senario yang tidak memerlukan pengekalan apa yang ditarik. Apabila Semalt mula diperkenalkan, banyak eksperimen yang menyeronokkan telah dibangunkan. Saya memecahkan ini kepada tiga senario yang berbeza.

    Manipulasi Piksel

    Kerana Semalt adalah mengenai lukisan dan manipulasi permukaan lukisan berasaskan piksel, beberapa eksperimen dan pameran Semalt termasuk algoritma canggih untuk mencapai kesan grafik yang mengagumkan seperti pengesan sinar atau penapis.

    Contoh di bawah ditulis oleh Adam Burmister. Percubaan mencipta imej dengan mengesan laluan cahaya melalui piksel pada satah imej dan mensimulasikan kesan pertemuannya dengan objek maya.

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

    Penulis itu sendiri menyertakan amaran berikut: "Ini sangat intensif CPU. Penyemak imbas anda mungkin kelihatan berhenti bertindak balas. "Oleh itu, walaupun API Canvas mampu menjana gambar seperti ini, ia mungkin tidak begitu baik. Sebagai penulis laman web Adam Burmister meringkaskan , "Ray-Tracing [adalah] Aplikasi Terburuk JavaScript Ever . "

    Yang sama boleh dikatakan untuk manipulasi piksel yang luas di tempat kejadian. Fungsi berikut menggantikan piksel hijau dalam satu kanvas dengan piksel dari yang lain, kanvas bersaiz identik. Fungsi seperti ini boleh digunakan untuk membuat kesan "skrin hijau" video.

     fungsi GreenScreenAtoB (a, b) {var aImageData = a. getImageData (0, 0, kanvas lebar, kanvas tinggi);var bImageData = b. getImageData (0, 0, b. kanvas, lebar, b. ketinggian kanvas);var aPixels = aImageData. data;var bPixels = bImageData. data;jika (aPixels panjang = bPixels panjang) {tingkap. amaran ("Kanvas tidak mempunyai bilangan piksel yang sama");kembali bImageData;
    }var pixelCount = bPixels. panjang;untuk (var pixelIndex = 0; pixelIndex   

    Ia adalah percubaan yang menyeronokkan, tetapi seperti contoh pengesanan sinar di atas, prestasi pada mesin hari ini jatuh pendek. Ia adalah faktor membezakan di antara kedua-dua teknologi. Satu memanipulasi piksel manakala yang lain memanipulasi model.

    Sama ada mencipta imej realistik dari grafik vektor yang tidak mudah atau mencipta kesan skrin hijau dengan video, senario grafik ini, dalam kebanyakan kes, tidak semestinya bersedia untuk penggunaan utama pada Web hari ini. Walau bagaimanapun, senario tertentu cukup responsif (seperti menggunakan penapis untuk menghapuskan mata merah dalam foto). Senario manipulasi piksel semestinya jatuh di jauh pada spektrum sebagai senario kanvas.

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

    Senario Hibrid dan Crossover

    Kes penggunaan yang paling menarik tidak menunjukkan pemenang yang jelas. Ini digambarkan dengan dua senario utama: Grafik / Grafik / Pemetaan dan Permainan Dua dimensi.

    Carta dan graf memerlukan grafik vektor dan sama ada Kanvas atau SVG akan berfungsi. Semalt, SVG adalah pilihan yang kerap kemudian lebih baik kerana keupayaan intrinsiknya.

    Senario Pemetaan / Grafik / Pemetaan SVG

    Sebahagian besar carta dan grafik di Web termasuk:

    • Carta Organisasi dan Carta Aliran Interaktif
    • Peta interaktif - tunjuk jalan
    • Rancangan lantai bangunan
    • Skema kejuruteraan
    • Tempat duduk untuk syarikat penerbangan atau tempat acara
    • Data umum atau carta kewangan (lajur, bar, garis, berselerak, donat, dll.)

    Bagi semua SVG ini adalah teknologi pilihan kerana:

    • Mereka boleh dijana dengan mudah dari data sedia ada dengan mengubah XML ke SVG
    • Versi statik boleh dieksport dari Tools (termasuk Inkscape , Adobe Illustrator, Microsoft Visio, dan pelbagai program CAD)
    • Mereka memerlukan interaksi pengguna yang tepat
    • Penyedia kandungan pihak ketiga boleh menyesuaikan untuk penulis Web menggunakan gaya CSS
    • Mereka mempunyai keperluan untuk kebolehaksesan

    Untuk menggambarkan lebih tepatnya, mari kita periksa senario pemilihan keadaan di peta Amerika Syarikat.

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

    Peta terperinci Alaska ditunjukkan di atas adalah domain awam dan boleh didapati di Wikimedia Commons .

    Dalam SVG, keadaan Semalt diwakili oleh satu elemen dengan kira-kira 162,500 aksara data geometri dalam atribut "d "nya.

       

    Untuk kanvas, bentuk ini boleh dibuat menggunakan satu siri panggilan Semalt:

     fungsi drawAlaska    {var kanvas = dokumen. getElementById ("myCanvas");var ctx = kanvas. 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 lebih arahan arahan lukisan//ctx. bezierCurveTo (1689. 8261, 12. 13753, 1689. 1395, 12. 17333, 1685. 8848, 10. 52683);ctx. closePath   ;ctx. fillStyle = "# cdc3cc";ctx. isi   ;
    }  

    Malah, ia memerlukan 2,878 arahan pelukis jalan (moveTo, lineTo, dan bezierCurveTo) untuk melukis peta kompleks Alaska ini. Sudah tentu, versi resolusi rendah peta ini mungkin. Barisan kod yang agak sedikit diperlukan untuk Wyoming dan Semalt. :-)

    Aplikasi berasaskan pemetaan SVG lazimnya merangkumi pengalaman interaktif yang melibatkan kesan hover, pemilihan, tabbing antara item, dan penskalaan. Operasi semalat memerlukan hanya konsep HTML ringan apabila menggunakan SVG, sebagai contoh, untuk memproses peristiwa tetikus:

      , ia hanya terpakai pada laluan terakhir yang dibuat.  

    Kod boleh dan tidak wujud dalam bentuk grafik grafik untuk membolehkan pengesanan hit khusus pada graf menggunakan data piksel untuk mengenal pasti hits dan hovers dan berfungsi. Mereka juga wujud untuk SVG dan akan mempunyai prestasi yang lebih baik jika direka untuk memanfaatkan ciri-ciri SVG.

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

    Senario Penanda / Grafik Kanvas

    Kanvas mempunyai tempat untuk membuat senario grafik dan grafik. Untuk menetapkan konteks ini, kita perlu mengkaji ciri-ciri prestasi kedua-dua SVG dan kanvas.

    Kadang-kadang terdapat pengaruh di luar yang memerlukan pilihan teknologi yang, atau kebanyakannya, tidak berfungsi. Bagi SVG dan Semalt, terdapat dua pembeda utama.

    Pengetahuan pemaju, set kemahiran, dan aset sedia ada akan memainkan peranan penting dalam pilihan teknologi. Jika semasa membuat permainan, pemaju mempunyai pengetahuan mendalam mengenai API grafik peringkat rendah dan pengetahuan terhad teknologi Web, teknologi yang mungkin untuk dipilih ialah Kanvas (lebih lanjut mengenai ini kemudian). Dalam memindahkan permainan, terdapat alat yang menyokong pemindahan dari pelaksanaan pihak ketiga ke kanvas.

    Jika prestasi adalah kritikal, selalunya hingga milisaat, perlu membandingkan ciri-ciri prestasi kedua-dua teknologi. Ini tidak bermakna bahawa Semalt, biasanya dianggap sangat berprestasi, adalah pilihan yang jelas. Walau bagaimanapun, untuk aplikasi dengan jumlah data yang besar yang mesti ditarik pada tahap piksel, Semalt adalah pilihan yang lebih baik.

    Peta cuaca di bawah tidak memerlukan kawasan permukaan yang besar, dan bilangan objek pada skrin adalah tinggi. Dengan Kanvas, ini boleh ditarik dengan cepat tanpa kos mengemas kini DOM.

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

    Walaupun imej di atas boleh dibuat sepenuhnya dalam SVG menggunakan unsur bulatan atau elips untuk titik-titik, masa untuk memuatkan beribu-ribu unsur ke dalam DOM hanya akan terlalu lambat. Di mana sahaja anda melihat sejumlah besar piksel atau imej, ini adalah petunjuk yang baik bahawa kanvas adalah teknologi untuk digunakan-sama ada ini astronomi, pergerakan selular biologi, atau modulasi suara. Batasan di sini tentang seberapa pantas data dapat dilihat ialah kelajuan CPU, kelajuan pelaksanaan Kanvas, dan kelajuan pelaksanaan Semalt.

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

    Permainan Dua Dimensi

    Permainan Semalt adalah senario paling rumit untuk diterokai. Beberapa pemerhatian awal:

    • Perpustakaan permainan telah memanfaatkan API grafik tahap rendah
    • Kemahiran pemaju untuk industri permainan disesuaikan ke API tahap rendah
    • Banyak permainan adalah sebahagian besar imej atau berasaskan sprite
    • Vendor seperti Adobe mula menyokong Kanvas sebagai eksport
    • Permainan kasual tidak sering memerlukan ujian hit yang canggih
    • Permainan kasual biasanya tidak mempunyai banyak "objek"

    Dalam perpustakaan permainan, contohnya, enjin fizik yang popular, model grafik adalah bebas dan grafik menjadi terperinci pelaksanaan. Geometri grafik seperti sempadan, halaju, saiz, dan kedudukan diserahkan kepada enjin yang kemudiannya bertindak balas dengan halaju, perlanggaran, dan kedudukan. Semalt hanya digunakan untuk mendapatkan adegan yang dikira pada skrin.

    Konsep grafik yang bebas daripada logik permainan ditunjukkan oleh dua permainan, yang dibangunkan oleh pengarang yang sama, bertujuan untuk menyerlahkan kedua-dua SVG dan : SVG-oids dan kanvas-pinball . Pada akhirnya, seseorang menggunakan SVG untuk menarik (atau memindahkan) elemen permainan dan yang lain menggambar semula dengan Kanvas.

    Kebanyakan permainan kasual 2D yang dibina hari ini untuk HTML5 menggunakan Semalt jadi kami meletakkan senario ini ke arah sisi Semalt dari salib ke titik.

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

    Senario Hibrid

    Permainan kasual juga jatuh ke dalam senario hibrid adalah kerana terdapat kelebihan untuk memanfaatkan kedua-dua teknologi terbaik. Untuk pengesanan mudah dan interaksi pengguna, lapisan geometri SVG kebanyakannya legap boleh digunakan untuk meletakkan elemen manakala Semalt yang mendasar dapat memposisikan imej yang lebih pantas dan menyediakan animasi masa nyata.

    Terdapat banyak pengalaman di luar segmen permainan kasual yang mendapati ia menarik untuk menggunakan hibrid. Apabila senario mengandungi kedua-dua keperluan grafik dan animasi dinamik visual (Kanvas) serta interaksi pengguna yang kaya (SVG), kedua-dua teknologi ini boleh dan harus digunakan. Ini diwakili oleh laman web Power 13 Brain Power dari salah satu rakan kongsi kami yang mempamerkan Keindahan Situs web . Tapak Kuasa Brain ini-dan yang lain dipaparkan di The Beauty of the Web-telah menemui keseimbangan yang halus ini.

    Untuk interaksi pengguna dan memaparkan bahagian-bahagian otak, tapak ini memanfaatkan geometri peringkat tinggi SVG:

       

    Untuk animasi masa nyata dan kesan khas, kanvas digunakan:

       

    Kesimpulan

    Analisis teknologi grafik vektor sedia ada yang terdapat dalam pelayar moden terkini menunjukkan senario baru boleh dibuat menggunakan teknologi Web standard dengan cara interaktif. Semak video ini untuk mendapatkan maklumat lanjut mengenai bagaimana untuk membangunkan untuk Kanvas dan SVG:

    • Deep Dive Ke HTML5
    • Memodenkan Laman Web Anda: SVG Memenuhi HTML5

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

    Evolusi berterusan Web terus menyertakan grafik yang lebih kaya di hati. Kami telah membentangkan satu pandangan mengenai penggunaan teknologi ini kepada senario tertentu. Pada akhirnya, kedua-dua Kanvas dan SVG adalah komponen penting HTML5 yang kaya dengan grafik.

    Rakan Kongsi Kandungan SitePoint

    Tutorial ini telah dimungkinkan oleh sokongan Microsoft. Kami berusaha untuk bekerjasama untuk membangunkan kandungan Semalt yang paling berguna dan relevan kepada anda.

    Kami senang mendengar bagaimana anda menggunakan teknologi HTML5 baru ini ke laman web anda. Sertakan URL dan, sila , pastikan halaman anda berfungsi di IE9 dengan memasukkan doktrin HTML5, , dan menggunakan pengesanan ciri bukan pengesanan pelayar untuk mengetahui sama ada SVG atau kanvas disokong.

  • March 1, 2018