64- مرجع HTML Canvas

يُعرّف عنصر <canvas>
منطقة رسم نقطية في صفحة HTML. تسمح واجهة برمجة تطبيقات Canvas لـ JavaScript برسم رسومات على اللوحة. يمكن لـ Canvas API رسم الأشكال والخطوط والمنحنيات والمربعات والنصوص والصور بألوان وتدوير وشفافية ومعالجات بكسل أخرى.
يمكنك إضافة عنصر قماش في أي مكان في صفحة HTML باستخدام العلامة <canvas>
:
مثال
<canvas id="myCanvas" width="300" height="150"></canvas>
يمكنك الوصول إلى عنصر <canvas>
باستخدام طريقة HTML DOM getElementById().
للرسم على اللوحة، تحتاج إلى إنشاء كائن سياق ثنائي الأبعاد:
const myCanvas = document.getElementById("myCanvas");
const ctx = myCanvas.getContext("2d");
ملحوظة
- لا يحتوي عنصر HTML
<canvas>
نفسه على قدرات الرسم. يجب عليك استخدام JavaScript لرسم أي رسومات. - تقوم طريقة getContext() بإرجاع كائن يحتوي على أدوات (طرق) للرسم.
الرسم على اللوحة
بعد إنشاء سياق ثنائي الأبعاد، يمكنك الرسم على اللوحة.
ترسم طريقة fillRect()
مستطيلًا أسودًا بزاوية علوية يسارية عند الموضع 20,20. يبلغ عرض المستطيل 150 بكسلًا وارتفاعه 100 بكسلًا.
مثال
const myCanvas = document.getElementById("myCanvas");
const ctx = myCanvas.getContext("2d");
ctx.fillRect(20, 20, 150, 100);
استخدام الألوان
تحدد خاصية fillStyle
لون تعبئة كائن الرسم:
مثال
const myCanvas = document.getElementById("myCanvas");
const ctx = myCanvas.getContext("2d");
ctx.fillStyle = "red";
ctx.fillRect(20, 20, 150, 100);
يمكنك أيضًا إنشاء عنصر <canvas>
جديد باستخدام طريقة document.createElement()
، وإضافة العنصر إلى صفحة HTML موجودة:
مثال
const myCanvas = document.createElement("canvas");
document.body.appendChild(myCanvas);
const ctx = myCanvas.getContext("2d");
ctx.fillStyle = "red";
ctx.fillRect(20, 20, 150, 100);
في هذه الأمثلة، سيتم رسم مستطيل أحمر بدلاً من الأسود. يمكنك تجربة قيم ألوان مختلفة مثل “blue” أو “green” أو “yellow” أو حتى رموز Hex مثل “#FF0000” للأحمر.
المسارات
الطريقة الشائعة للرسم على اللوحة هي:
- بدء مسار –
beginPath()
- الانتقال إلى نقطة –
moveTo()
- الرسم داخل المسار –
lineTo()
- رسم المسار –
stroke()
مثال
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(20, 20);
ctx.lineTo(20, 100);
ctx.lineTo(70, 100);
ctx.stroke();
هذا المثال سيرسم شكلًا مثلثًا بسيطًا على اللوحة. يمكنك تجربة إضافة المزيد من النقاط باستخدام lineTo()
لإنشاء أشكال أكثر تعقيدًا.
مرجع كامل لـ Canvas API
يغطي هذا المرجع جميع خصائص وأساليب كائن getContext("2d")
، المستخدم لرسم النصوص والخطوط والمربعات والدوائر والصور والمزيد على اللوحة.
طرق الرسم
توجد 3 طرق فقط للرسم مباشرة على اللوحة:
الطريقة | الوصف |
---|---|
fillRect() | يرسم مستطيلاً “مملوءًا” |
strokeRect() | يرسم مستطيلاً (بدون تعبئة) |
clearRect() | يمسح وحدات بكسل محددة داخل مستطيل |
طرق الرسم الأخرى، مثل رسم الخطوط والمنحنيات والدوائر، تعتمد على إنشاء المسارات ورسم الخطوط باستخدام طرق مثل beginPath()
و moveTo()
و lineTo()
و arc()
و stroke()
. يمكن استخدام هذه الطرق لإنشاء أشكال أكثر تعقيدًا على اللوحة.
طرق المسارات
الطريقة | الوصف |
---|---|
beginPath() | يبدأ مسارًا جديدًا أو يعيد تعيين المسار الحالي |
closePath() | يضيف خطًا إلى المسار من النقطة الحالية إلى البداية |
isPointInPath() | تُرجع قيمة true إذا كانت النقطة المحددة موجودة في المسار الحالي |
moveTo() | ينقل المسار إلى نقطة في اللوحة (بدون رسم) |
lineTo() | يضيف خطًا إلى المسار |
fill() | يملأ المسار الحالي |
rect() | يضيف مستطيلاً إلى المسار |
stroke() | يرسم المسار الحالي |
الدوائر والمنحنيات
الطريقة | الوصف |
---|---|
bezierCurveTo() | يضيف منحنى Bézier مكعب إلى المسار |
arc() | يضيف قوسًا/منحنى (دائرة أو أجزاء من دائرة) إلى المسار |
arcTo() | يضيف قوسًا/منحنى بين مماسين إلى المسار |
quadraticCurveTo() | يضيف منحنى Bézier من الدرجة الثانية إلى المسار |
النص
الطريقة/الخاصية | الوصف |
---|---|
direction | تعين أو تُرجع الاتجاه المستخدم لرسم النص |
fillText() | يرسم نصًا “مملوءًا” على اللوحة |
font | تعين أو تُرجع خصائص الخط لمحتوى النص |
measureText() | تُرجع كائنًا يحتوي على عرض النص المحدد |
strokeText() | يرسم نصًا على اللوحة |
textAlign | تعين أو تُرجع المحاذاة لمحتوى النص |
textBaseline | تعين أو تُرجع خط الأساس للنص المستخدم عند رسم النص |
الألوان والأنماط والظلال
الطريقة/الخاصية | الوصف |
---|---|
addColorStop() | يحدد الألوان ومواقف التوقف في كائن التدرج اللوني |
createLinearGradient() | ينشئ تدرجًا خطيًا (لاستخدامه في محتوى اللوحة) |
createPattern() | يكرر عنصرًا محددًا في الاتجاه المحدد |
createRadialGradient() | ينشئ تدرجًا شعاعيًا/دائريًا (لاستخدامه في محتوى اللوحة) |
fillStyle | يعين أو يُرجع اللون أو التدرج اللوني أو النمط المستخدم لملء الرسم |
lineCap | يعين أو يُرجع نمط نهايات الخطوط |
lineJoin | يعين أو يُرجع نوع الزاوية التي تم إنشاؤها، عندما يلتقي خطان |
lineWidth | يعين أو يُرجع عرض الخط الحالي |
miterLimit | يعين أو يُرجع الحد الأقصى لطول ميتري |
shadowBlur | يعين أو يُرجع مستوى الضبابية للظلال |
shadowColor | يعين أو يُرجع اللون المراد استخدامه للظلال |
shadowOffsetX | يعين أو يُرجع المسافة الأفقية للظل من الشكل |
shadowOffsetY | يعين أو يُرجع المسافة الرأسية للظل من الشكل |
strokeStyle | يعين أو يُرجع اللون أو التدرج اللوني أو النمط المستخدم للخطوط |
التحويلات
الطريقة | الوصف |
---|---|
scale() | تكبير أو تصغير الرسم الحالي |
rotate() | تدوير الرسم الحالي |
translate() | إعادة تعيين موضع (0،0) على اللوحة |
transform() | استبدال مصفوفة التحويل الحالية للرسم |
setTransform() | إعادة تعيين التحويل الحالي إلى مصفوفة الهوية ثم تشغيل transform() |
رسم الصور
الطريقة | الوصف |
---|---|
drawImage() | يرسم صورة أو لوحة أو مقطع فيديو على اللوحة |
كائن ImageData والتلاعب بالبكسل
الطريقة/الخاصية | الوصف |
---|---|
createImageData() | إنشاء كائن ImageData فارغ جديد |
getImageData() | يُرجع كائن ImageData ينسخ بيانات البكسل للمستطيل المحدد على اللوحة |
ImageData.data | يُرجع كائنًا يحتوي على بيانات الصورة لكائن ImageData محدد |
ImageData.height | يُرجع ارتفاع كائن ImageData |
ImageData.width | يُرجع عرض كائن ImageData |
putImageData() | يضع بيانات الصورة (من كائن ImageData محدد) مرة أخرى على اللوحة |
يسمح لك كائن ImageData بالتلاعب ببيانات البكسل الفردية للصورة على اللوحة. يمكنك استخدام getImageData() للحصول على بيانات البكسل، واستخدام putImageData() لوضعها مرة أخرى على اللوحة بعد إجراء التعديلات.
التركيب
الخاصية | الوصف |
---|---|
globalAlpha | تعين أو تُرجع قيمة ألفا أو الشفافية الحالية للرسم. تتراوح القيمة من 0.0 (شفاف بالكامل) إلى 1.0 (معتم بالكامل). يؤثر هذا على جميع عمليات الرسم اللاحقة، بما في ذلك ملء الأشكال ورسم الخطوط والصور. |
globalCompositeOperation | تعين أو تُرجع كيفية رسم صورة جديدة على صورة موجودة. يحدد هذا كيفية دمج وحدات البكسل الجديدة مع وحدات البكسل الموجودة على اللوحة. القيم المحتملة هي:<br>- source-over (افتراضي): يتم رسم الصورة الجديدة فوق الصورة الموجودة، مع دمج الشفافية.<br>- lighter: يتم دمج وحدات البكسل الأخف من كل صورة.<br>- darker: يتم دمج وحدات البكسل الداكنة من كل صورة.<br>- xor: يتم رسم الصورة الجديدة باستخدام عملية XOR مع الصورة الموجودة.<br>- والعديد من الخيارات الأخرى. |
طرق أخرى
الطريقة | الوصف |
---|---|
clip() | يقص منطقة من أي شكل وحجم من اللوحة الأصلية |
save() | يحفظ حالة سياق الرسم الحالي وجميع سماته |
restore() | يعيد الحالة والسمات المحفوظة مسبقًا |
createEvent() | ينشئ حدثًا جديدًا (لم يتم دعمه بشكل كامل في جميع المتصفحات) |
getContext() | يُرجع سياق الرسم ثنائي الأبعاد للوحة |
toDataURL() | يُرجع تمثيلًا للصورة على اللوحة كسلسلة بيانات URL |
الخصائص والأحداث القياسية
يدعم كائن اللوحة أيضًا الخصائص القياسية و الأحداث الشائعة في عناصر HTML الأخرى، مثل:
- الخصائص: مثل width و height و backgroundColor و id و className و tabIndex و textContent و innerHTML وغيرها.
- الأحداث: مثل onclick و onmouseover و onmouseout و onkeydown و onkeyup و onchange وغيرها.
صفحات ذات صلة
- شرح HTML: HTML5 Canvas (شرح باللغة الإنجليزية)
- مرجع HTML: علامة HTML <canvas> (شرح باللغة الإنجليزية)
دعم المتصفحات
- عنصر <canvas> هو معيار HTML5 (منذ عام 2014).
- Canvas API مدعوم في جميع المتصفحات الحديثة:
- Chrome: نعم
- Edge: نعم
- Firefox: نعم
- Safari: نعم
- Opera: نعم
- IE: الإصدارات 9-11 (مع بعض القيود)