ใน 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>
การประยุกต์ใช้งาน
- กราฟเส้นและกราฟแผนภูมิ: Canvas สามารถใช้สร้างกราฟสำหรับแสดงข้อมูลได้
- การสร้างเกม: สามารถใช้ร่วมกับการตรวจจับเหตุการณ์ต่าง ๆ เช่น การกดปุ่ม หรือการคลิก
- แอนิเมชัน: สามารถสร้างการเคลื่อนไหวที่ซับซ้อน เช่น การเคลื่อนไหวของวัตถุในพื้นที่ต่าง ๆ
- การวาดแบบโต้ตอบ: สามารถสร้างเครื่องมือวาดภาพที่ให้ผู้ใช้สามารถวาดสิ่งต่าง ๆ บนหน้าจอได้
- เอฟเฟกต์พิเศษ: เช่น การสร้างภาพเคลื่อนไหวหรือเอฟเฟกต์ภาพแบบ Particle Systems
