الرسم على Canvas
تعلم كيفية الرسم على عنصر Canvas وإنشاء العناصر المرئية للعبتك.
مقدمة إلى Canvas
عنصر Canvas في HTML5 يوفر سطح رسم (Rendering Surface) يمكننا من إنشاء رسومات تفاعلية وألعاب ثنائية الأبعاد مباشرة في المتصفح دون الحاجة إلى إضافات خارجية.
💡 لماذا نستخدم Canvas؟
يتميز Canvas بأدائه العالي في معالجة الرسومات مقارنة بـ DOM، مما يجعله خيارًا مثاليًا للألعاب والتطبيقات التفاعلية.
إنشاء عنصر Canvas
لإنشاء عنصر Canvas، نستخدم الوسم <canvas> في HTML:
<canvas id="myCanvas" width="800" height="400">
المتصفح الخاص بك لا يدعم عنصر Canvas.
</canvas>
الرسم الأساسي
لنبدأ برسم بعض الأشكال الأساسية على Canvas:
كود الرسم
هذا الكود يستخدم لرسم المستطيل في المثال أعلاه:
// الحصول على عنصر Canvas وسياق الرسم
const canvas = document.getElementById('drawingCanvas');
const ctx = canvas.getContext('2d');
// تعيين لون التعبئة
ctx.fillStyle = '#4f46e5';
// رسم مستطيل
// fillRect(x, y, width, height)
ctx.fillRect(50, 50, 200, 100);
// تعيين لون الحدود
ctx.strokeStyle = '#1e40af';
ctx.lineWidth = 3;
// رسم حدود المستطيل
ctx.strokeRect(50, 50, 200, 100);
الرسوم المتحركة
لإنشاء رسوم متحركة، نحتاج إلى مسح Canvas وإعادة رسم العناصر في كل إطار. دعونا ننشئ كرة تتحرك:
// متغيرات الكرة
let x = 50;
let dx = 2; // السرعة الأفقية
function drawBall() {
const canvas = document.getElementById('animationCanvas');
const ctx = canvas.getContext('2d');
// مسح Canvas
ctx.clearRect(0, 0, canvas.width, canvas.height);
// رسم الكرة
ctx.beginPath();
ctx.arc(x, 100, 20, 0, Math.PI * 2);
ctx.fillStyle = '#4f46e5';
ctx.fill();
ctx.closePath();
// تحديث موضع الكرة
x += dx;
// ارتداد عند الحواف
if (x + 20 > canvas.width || x - 20 < 0) {
dx = -dx;
}
// طلب الإطار التالي من الرسوم المتحركة
animationId = requestAnimationFrame(drawBall);
}
// بدء الرسوم المتحركة
let animationId = requestAnimationFrame(drawBall);
// إيقاف الرسوم المتحركة
function stopAnimation() {
cancelAnimationFrame(animationId);
}
التحكم بالرسومات
يمكنك التحكم في مظهر الرسومات باستخدام خصائص مختلفة:
fillStyle: لون التعبئةstrokeStyle: لون الحدودlineWidth: سمك الخطfont: خط النصglobalAlpha: الشفافية
💡 نصيحة
لتحسين الأداء، قم بتجميع عمليات الرسم المتشابهة معًا وتجنب تغيير إعدادات السياق بشكل متكرر.
ما التالي؟
الآن بعد أن تعلمت كيفية الرسم على Canvas، يمكنك الانتقال إلى الدرس التالي حيث سنتعلم كيفية إنشاء حلقة اللعبة (Game Loop) لتحريك العناصر بسلاسة.