Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> HTML

ความแตกต่างระหว่าง SVG และ HTML5 Canvas


องค์ประกอบ HTML <svg> เป็นคอนเทนเนอร์สำหรับกราฟิก SVG SVG ย่อมาจาก Scalable Vector Graphics SVG เหมาะสำหรับกำหนดกราฟิกเช่น กล่อง วงกลม ข้อความ ฯลฯ SVG ย่อมาจาก Scalable Vector Graphics และเป็นภาษาสำหรับอธิบาย 2D-graphics และแอปพลิเคชันกราฟิกใน XML และ XML จะถูกเรนเดอร์โดย SVG viewer เบราว์เซอร์ส่วนใหญ่แสดง SVG ได้เหมือน PNG, GIF, และ JPG

องค์ประกอบ HTML <canvas> ใช้วาดกราฟิกผ่าน JavaScript <canvas> เป็นคอนเทนเนอร์สำหรับกราฟิก

SVG HTML Canvas
SVG มีความสามารถในการขยาย (scalability) ดีกว่า จึงพิมพ์คุณภาพสูงได้ที่ความละเอียดใดๆ Canvas มี scalability แย่กว่า จึงไม่เหมาะสำหรับพิมพ์ความละเอียดสูง
SVG ให้ประสิทธิภาพดีกว่ากับจำนวนอ็อบเจกต์น้อยหรือพื้นที่ใหญ่ Canvas ให้ประสิทธิภาพดีกว่ากับพื้นที่เล็กหรือจำนวนอ็อบเจกต์มาก
SVG ปรับเปลี่ยนได้ผ่าน script และ CSS Canvas ปรับเปลี่ยนได้ผ่าน script เท่านั้น
SVG เป็น vector-based ประกอบด้วยรูปทรง Canvas เป็น raster-based ประกอบด้วยพิกเซล

ตัวอย่าง

ลองรันโค้ดด้านล่างเพื่อเพิ่ม scalable vector graphics (SVG) ลงในหน้าเว็บ:

<!DOCTYPE html>
<html>
  <head>
    <style>
      #svgelem {
        position: relative;
        left: 50%;
        -webkit-transform: translateX(-20%);
        -ms-transform: translateX(-20%);
        transform: translateX(-20%);
      }
    </style>
    <title>HTML5 SVG</title>
  </head>
  <body>
    <h2 align="center">HTML5 SVG Circle</h2>
    <svg id="svgelem" height="200" xmlns="https://www.w3.org/2000/svg">
      <circle id="bluecircle" cx="60" cy="60" r="50" fill="blue" />
    </svg>
  </body>
</html>

ตัวอย่าง

ลองรันโค้ดด้านล่างเพื่อเรียนรู้การวาดสี่เหลี่ยมด้วย HTML5 Canvas:

<!DOCTYPE html>
<html>
  <head>
    <title>HTML5 Canvas Tag</title>
  </head>
  <body>
    <canvas id="newCanvas" width="200" height="100" style="border:1px solid #000000;"></canvas>
    <script>
      var c = document.getElementById('newCanvas');
      var ctx = c.getContext('2d');
      ctx.fillStyle = '#7cce2b';
      ctx.fillRect(0,0,300,100);
    </script>
  </body>
</html>