การตั้งค่า Canvas และบริบท 2D
สร้างองค์ประกอบ canvas และรับบริบทการแสดงผล 2D
การตั้งค่า Canvas และบริบท 2D เป็นบทเรียน HTML Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน HTML Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน
องค์ประกอบ canvas
องค์ประกอบ <canvas> คือพื้นผิวบิตแมปสำหรับวาดภาพในเบราว์เซอร์:
<canvas id="myCanvas" width="800" height="400">
<!-- Fallback for browsers without canvas support -->
<p>Your browser does not support HTML5 Canvas.</p>
</canvas>แอตทริบิวต์ความกว้างและความสูง
ควรกำหนดขนาด canvas ผ่านแอตทริบิวต์ HTML ไม่ใช่ CSS เสมอ:
<!-- CORRECT: set intrinsic size via attributes -->
<canvas width="800" height="400"></canvas>
<!-- WRONG: CSS changes display size but not canvas resolution -->
<canvas style="width: 800px; height: 400px;"></canvas>
<!-- This stretches a default 300x150 canvas to 800x400
Result: blurry graphics -->การรับบริบทแบบ 2 มิติ
รับบริบทการแสดงผลแบบ 2 มิติเพื่อวาดภาพ:
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
// ctx is a CanvasRenderingContext2D object
// All drawing operations are methods on ctx
// Check browser support:
if (!canvas.getContext) {
console.error('Canvas not supported');
}ระบบพิกัด
ระบบพิกัดของ canvas เริ่มต้นที่มุมซ้ายบน:
// (0, 0) = top-left corner
// (width, 0) = top-right
// (0, height) = bottom-left
// (width, height) = bottom-right
// For a 800x400 canvas:
// x increases left → right (0 to 800)
// y increases top → bottom (0 to 400)
//
// Example: draw at center:
ctx.fillRect(400, 200, 10, 10); // centered dotสถานะของ canvas
canvas มีสถานะการวาดที่สามารถบันทึกและกู้คืนได้:
ctx.save(); // push current state onto a stack
// Change state:
ctx.fillStyle = 'red';
ctx.globalAlpha = 0.5;
// Draw with modified state...
ctx.fillRect(100, 100, 200, 200);
ctx.restore(); // pop state: back to pre-save settingsการล้าง canvas
ล้าง canvas ทั้งหมดก่อนวาดใหม่ สำหรับภาพเคลื่อนไหว:
// Clear entire canvas:
ctx.clearRect(0, 0, canvas.width, canvas.height);
// Or with a background color:
ctx.fillStyle = 'white';
ctx.fillRect(0, 0, canvas.width, canvas.height);fillStyle และ strokeStyle
กำหนดสีสำหรับการเติมพื้นที่และการวาดเส้น:
ctx.fillStyle = 'blue'; // CSS color name
ctx.fillStyle = '#ff6600'; // hex color
ctx.fillStyle = 'rgb(255, 100, 0)'; // rgb
ctx.fillStyle = 'rgba(255, 100, 0, 0.5)'; // rgba with alpha
ctx.fillStyle = gradient; // gradient object
ctx.fillStyle = pattern; // pattern object
ctx.strokeStyle = '#333333'; // border colorlineWidth และคุณสมบัติสไตล์อื่น ๆ
คุณสมบัติของสไตล์เส้นและการวาดเส้น:
ctx.lineWidth = 4; // stroke width in pixels
ctx.lineCap = 'round'; // butt | round | square
ctx.lineJoin = 'round'; // miter | round | bevel
ctx.setLineDash([5, 3]); // dashed line: 5px dash, 3px gap
ctx.globalAlpha = 0.8; // transparency for all drawing
ctx.globalCompositeOperation = 'multiply'; // blend modescanvas HiDPI แบบปรับตามหน้าจอ
แก้ปัญหา canvas แสดงภาพไม่คมชัดบนจอเรตินา/HiDPI:
function setupHiDPI(canvas, width, height) {
const dpr = window.devicePixelRatio || 1;
canvas.width = width * dpr;
canvas.height = height * dpr;
canvas.style.width = width + 'px';
canvas.style.height = height + 'px';
const ctx = canvas.getContext('2d');
ctx.scale(dpr, dpr); // scale all drawing
return ctx;
}Canvas เทียบกับ SVG
ควรเลือก Canvas หรือ SVG เมื่อใด:
- Canvas — บิตแมป ประมวลผลทีละพิกเซล เหมาะสำหรับเกม การแสดงข้อมูลขนาดใหญ่ และการประมวลผลภาพ
- SVG — เวกเตอร์ ปรับขนาดได้ เหมาะสำหรับโลโก้ ไอคอน แผนภูมิที่มีองค์ประกอบโต้ตอบได้ และการเข้าถึง
การเข้าถึง canvas
canvas ไม่มีการรองรับการเข้าถึงในตัว — ต้องเพิ่มด้วยตนเอง:
<canvas
id="chart"
width="800"
height="400"
aria-label="Bar chart showing Q1-Q4 revenue growth"
role="img"
>
<!-- Fallback for non-canvas browsers and screen readers -->
<table><!-- accessible data table --></table>
</canvas>ตรวจสอบอย่างรวดเร็ว
วิธีที่ถูกต้องในการรับบริบทการวาดของ canvas คืออะไร
ทบทวน: การตั้งค่า Canvas
สิ่งสำคัญในการตั้งค่า Canvas:
- กำหนดความกว้างและความสูงผ่านแอตทริบิวต์ HTML ไม่ใช่ CSS
canvas.getContext('2d')— รับบริบทการวาด- จุดกำเนิดอยู่มุมซ้ายบน (0,0); x→ขวา, y→ลง
ctx.save()/ctx.restore()— จัดการสถานะด้วยโครงสร้างแบบสแตก- ปรับมาตราส่วนด้วย devicePixelRatio เพื่อการแสดงผลบนจอเรตินาที่คมชัด
คำถามที่พบบ่อย
บทเรียน “การตั้งค่า Canvas และบริบท 2D” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การตั้งค่า Canvas และบริบท 2D” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส HTML Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การตั้งค่า Canvas และบริบท 2D”
สร้างองค์ประกอบ canvas และรับบริบทการแสดงผล 2D คุณปฏิบัติ HTML Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน HTML Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน HTML Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การตั้งค่า Canvas และบริบท 2D” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน HTML Academy นี้ได้ไหม
ได้ บทเรียน HTML Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การตั้งค่า Canvas และบริบท 2D
- การวาดสี่เหลี่ยมและเส้นพาธ
- ข้อความและรูปภาพบน Canvas
- ภาพเคลื่อนไหวด้วย requestAnimationFrame