HTML5 การใช้งาน Canvas Graphic

ใน HTML5, <canvas> เป็นองค์ประกอบที่ใช้ในการวาดกราฟิกผ่านการเขียนโค้ด JavaScript สามารถใช้ในการวาดรูปภาพ กราฟเส้น, การสร้างแอนิเมชัน, เกม, และกราฟิกเชิงโต้ตอบได้ โดยทั่วไปจะใช้กับ API ของ CanvasRenderingContext2D สำหรับกราฟิกแบบสองมิติ

การใช้งาน <canvas> เบื้องต้น

องค์ประกอบ <canvas> จะต้องกำหนดความกว้าง (width) และความสูง (height) ตามที่ต้องการ

HTML
<canvas id="myCanvas" width="500" height="400" style="border:1px solid #000;"></canvas>

จากนั้นจะใช้ JavaScript ในการเข้าถึงและวาดกราฟิก

HTML
<canvas id="myCanvas" width="500" height="400" style="border:1px solid #000;"></canvas>
  <script>
    let canvas = document.getElementById("myCanvas");
    let context = canvas.getContext("2d");
  </script>

ฟังก์ชันต่าง ๆ ที่สามารถใช้ได้

การวาดรูปทรงพื้นฐาน

สี่เหลี่ยม
  • fillRect(x, y, width, height) วาดสี่เหลี่ยมทึบ
  • strokeRect(x, y, width, height) วาดสี่เหลี่ยมขอบ
  • clearRect(x, y, width, height) ลบส่วนของ canvas

ตัวอย่าง

HTML
  <canvas id="myCanvas" width="500" height="400" style="border:1px solid #000;"></canvas>
  <script>
    let canvas = document.getElementById("myCanvas");
    let context = canvas.getContext("2d");

    
    context.fillStyle = "blue";
    context.fillRect(20, 20, 150, 100);

    context.strokeStyle = "red";
    context.strokeRect(200, 20, 150, 100);

  </script>

การวาดเส้น

  • beginPath() เริ่มต้นเส้นทางใหม่
  • moveTo(x, y) ย้ายไปยังตำแหน่ง
  • lineTo(x, y) วาดเส้นไปยังตำแหน่งใหม่
  • stroke() แสดงเส้น

ตัวอย่าง

HTML
  <canvas id="myCanvas" width="500" height="400" style="border:1px solid #000;"></canvas>
  <script>
    let canvas = document.getElementById("myCanvas");
    let context = canvas.getContext("2d");


    context.beginPath();
    context.moveTo(50, 50);
    context.lineTo(200, 200);
    context.stroke();

  </script>

การวาดวงกลมและรูปร่างโค้ง

  • arc(x, y, radius, startAngle, endAngle, anticlockwise) วาดวงกลมหรือส่วนของวงกลม
  • arcTo(x1, y1, x2, y2, radius) วาดเส้นโค้งต่อเนื่อง

ตัวอย่าง

HTML
  <canvas id="myCanvas" width="500" height="400" style="border:1px solid #000;"></canvas>
  <script>
    let canvas = document.getElementById("myCanvas");
    let context = canvas.getContext("2d");


    context.beginPath();
    context.arc(150, 150, 75, 0, 2 * Math.PI);
    context.fillStyle = "green";
    context.fill();
    
  </script>

การใส่ข้อความ

  • fillText(text, x, y) วาดข้อความ
  • strokeText(text, x, y) วาดข้อความแบบขอบ

ตัวอย่าง

HTML
  <canvas id="myCanvas" width="500" height="400" style="border:1px solid #000;"></canvas>
  <script>
    let canvas = document.getElementById("myCanvas");
    let context = canvas.getContext("2d");


    context.font = "30px Arial";
    context.fillText("Hello World", 100, 100);

    context.strokeText("Hello World", 100, 150);
    
  </script>

การใส่รูปภาพ

  • drawImage(image, x, y) วาดรูปภาพ

ตัวอย่าง

HTML
  <canvas id="myCanvas" width="500" height="400" style="border:1px solid #000;"></canvas>
  <script>
    let canvas = document.getElementById("myCanvas");
    let context = canvas.getContext("2d");


    let img = new Image();
    img.onload = function () {
      context.drawImage(img, 10, 10);
    };
    img.src = 'image3.jpg';


  </script>

การสร้างแอนิเมชัน

สามารถใช้ฟังก์ชัน requestAnimationFrame() เพื่อทำการเรียกวนซ้ำสร้างแอนิเมชัน

ตัวอย่างแอนิเมชันของวัตถุที่เคลื่อนที่

HTML
  <canvas id="myCanvas" width="500" height="400" style="border:1px solid #000;"></canvas>
  <script>
    let canvas = document.getElementById("myCanvas");
    let context = canvas.getContext("2d");


    let x = 0;

    function animate() {
      context.clearRect(0, 0, canvas.width, canvas.height);
      context.fillStyle = "blue";
      context.fillRect(x, 50, 50, 50);

      x += 2;
      if (x < canvas.width) {
        requestAnimationFrame(animate);
      }
    }

    animate();

  </script>

การประยุกต์ใช้งาน

  1. กราฟเส้นและกราฟแผนภูมิ: Canvas สามารถใช้สร้างกราฟสำหรับแสดงข้อมูลได้
  2. การสร้างเกม: สามารถใช้ร่วมกับการตรวจจับเหตุการณ์ต่าง ๆ เช่น การกดปุ่ม หรือการคลิก
  3. แอนิเมชัน: สามารถสร้างการเคลื่อนไหวที่ซับซ้อน เช่น การเคลื่อนไหวของวัตถุในพื้นที่ต่าง ๆ
  4. การวาดแบบโต้ตอบ: สามารถสร้างเครื่องมือวาดภาพที่ให้ผู้ใช้สามารถวาดสิ่งต่าง ๆ บนหน้าจอได้
  5. เอฟเฟกต์พิเศษ: เช่น การสร้างภาพเคลื่อนไหวหรือเอฟเฟกต์ภาพแบบ Particle Systems
แชร์เรื่องนี้