هنگاميكه در بوم بصورت نرمال ترسيمي انجام ميشود، ترسيم همان است كه درمتد و ويژگي هاي اعمال شده مشاهده ميكنيد .اما ميتوان با استفاده از متدهائي تغييرات در ترسيم مثل مقياس ، مكان، جهت و ... اعمال نمود .دراين صفحه متدهاي تبديلي بوم كه مربوط مي باشند ، تشريح ميگردد.
جدول متدهاي تبديلي دربوم همراه لينك داخلي وتشريح آنها در زير آمده است.
متد | شرح |
---|---|
scale() | ترسيم فعلي را بزرگتر يا كوچكتر مبكند |
rotate() | ترسيم فعلي را مي چرخاند. |
translate() | موقعيت(0,0) روي بوم را دوباره ترسيم ميكند . |
transform() | جانشين ميكند ماتريس فعلي تبديل را براي ترسيم. |
setTransform() | ماتريس تبديل با اين متد بازنشاني(reset) ميشود .
اين ماتريس مبناي شروع ويا ادامه است. |
متدscale() براي شئ زمينه دوبعدي(context) مقياس ترسيم برقرار ميكند .درصورتيكه براي شئ مقياس اعلام نشود همان مقياس عادي يعنيscale(1,1) بدون تبديلي اعمال ميشود.
مثال ـ مستطيلي با مقياس معمول ترسيم ودوباره بامقياس200% رسم ميشود .
const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.strokeRect(5, 5, 25, 15); ctx.scale(2, 2); ctx.strokeRect(5, 5, 25, 15);
مستطيل اول كه باctx.dtrokeRec(5,5,25,15) ومقياس نرمال100% رسم ميشود، بامقياس200% مختصات متد دوبرابر وترسيم ميگردد .يعني مستطيل دوم با مقياس نرمالctx.strokeRect(10,10,50,30)خواهد بود.
نكته ـ اگر يك شئ زمينه(context) را با مقياسي تنظيم كنيد، تمام ترسيم بعدي متاثر ازآن مقياس ميشود.
پارامتر | شرح |
---|---|
scalewidth | مقياس مختصات افقي
1=100% 2=200% 0.5=50% |
scaleheight | مقياس مختصات عمودي
1=100% 2=200% 0.5=50% |
مثال ـ مستطيلي ترسيم ميكند .مقياس به200% تنظيم ودوباره مستطيلي رسم ميشود. مقياس دوباره به200% تنظيم ومستطيل ترسيم ميگردد.اين كار يك بار ديگر هم انجام ميشود.
const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); // scales 100% ctx.strokeRect(5, 5, 25, 15); ctx.scale(2, 2); //scales 200% ctx.strokeRect(5, 5, 25, 15); ctx.scale(2, 2); //scales 400% ctx.strokeRect(5, 5, 25, 15); ctx.scale(2, 2); //scales 800% ctx.strokeRect(5, 5, 25, 15);
توجه ـ به روند افزايش مقياس در كامنت دستورات مثال توجه كنيد وافزايش مقياس را نسبت به مقياس مبنا درك نمائيد.
متدrotate() ترسيم شئ زمينه(context) مرتبط را چرخش ميدهد.
توجه ـ پس از فراخواني روش چرخش، چرخش بر ترسيم هاي بعدي تاثير ميگذارد.
مثال ـ مستطيل را بيست در جه چرخش ميدهد.
const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.rotate(20 * Math.PI / 180); ctx.fillRect(50, 20, 100, 50);
پارامتر | شرح |
---|---|
angle | زاويه جرخش ترسيم برحسب راديان
(Radians=degrees*MATH.PI/180) براي چرخش5 درجه5*MATH.PI/180 راديان(PI=3.14) . |
با متدtranslate() نقطه (0,0) شئ زمينه (context) دوباره ترسيم ميگردد.
توجه ـ وقتي يك متد جديد را بعدازtranslate() فراخواني ميكنيد، موقعيت جديد به مختصاتx,y اضافه ميشود .
مثال ـ مستطيلي در نقطه(10,10) ترسيم ميشود .نقطه(0,0) بامتد translate(70,70)روي(70,70) تنظيم ميشود .با ترسيم مجدد مستطيل،ترسيم آن از نقطه(80,80) شروع ميشود.
const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.fillRect(10, 10, 100, 50); ctx.translate(70, 70); ctx.fillRect(10, 10, 100, 50);
پارامتر | شرح |
---|---|
x | مقداريكه به مختصات افقي نقطه اضافه ميشود. |
y | مقداريكه به مختصات عمودي نقطه اضافه ميشود. |
متدtransform() شئ زمينه(context) را روي موارد مقياس، چرخش ، انتقال ياحركت، وكجي براي ترسيم تنظيم ميكند.
هر شئ در بوم براي ترسيم داراي يك ماتريس تبديل(transformation matrix)ميباشد.
مثال ـ ترسيم مستطيل . يك ماتريس جديد با متدtransform() اضافه ميشود .مستطيل مطابق روال قبلي وماتريس تبديل جاري ترسيم ميشود .مجددا اضافه نمودن ماتريس ورسم مستطيل.
const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.fillStyle = "green"; ctx.fillRect(0, 0, 250, 100) ctx.transform(1, 0.5, -0.5, 1, 30, 10); ctx.fillStyle = "red"; ctx.fillRect(0, 0, 250, 100); ctx.transform(1, 0.5, -0.5, 1, 30, 10); ctx.fillStyle = "blue"; ctx.fillRect(0, 0, 250, 100);
توجه ـ هر باريكه متدtransform() فراخوان ميشود، ماتريس تبديل براساس ماتريس تبريل قبلي ساخته ميشود.
ماتريس تبديلي ايجاد شده روي ترسيم هاي بعدي تاثير ميگذارد.
پارامتر | شرح |
---|---|
a | مقياس افقي ترسيم |
b | كجي افقي ترسيم |
c | كجي عمودي ترسيم |
d | مقياس عمودي ترسيم |
e | انتقال افقي ترسيم |
f | انتقال عمودي ترسيم |
متدsettransform() زمينه(contex) را براي مقياس، چرخش، حركت و كجي تنظيم ميكند .هر شئ در بوم داراي يك ماتريس تبديل است .متد فوق ماتريس تبديل را به ماتريس هويت(identity matrix) بازنشاني ميكند وسپس transform() باهمان آرگومان ها اجرا ميكند.
مثال ـ مستطيلي ترسيم ميكند .ماتريس تبديل بازنشاني(reset) ميشود .دوباره مستطيل كشيده ميشود
const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.fillStyle = "green"; ctx.fillRect(0, 0, 250, 100) ctx.setTransform(1, 0.5, -0.5, 1, 30, 10); ctx.fillStyle = "red"; ctx.fillRect(0, 0, 250, 100); ctx.setTransform(1, 0.5, -0.5, 1, 30, 10); ctx.fillStyle = "blue"; ctx.fillRect(0, 0, 250, 100);
هرموقعي كه متدsetTransform() فراخواني ميشود، ماتريس تبديل جديدي ساخته ميشود .درمثال بالا مستطيل قرمز پنهان ونمايان نيست، زيرا آن پشت مستطيل سبز قرار دارد.
توجه ـ ماتريس تبديل پس از فراخواني متدsetTransform() برترسيم هاي بعدي تاثير ميگذارد.
پارامتر | شرح |
---|---|
a | مقياس افقي رامشخص ميكند. |
b | كجي افقي را مشخص ميكند. |
c | كجي عمودي را مشخص ميكند. |
d | مقياس عمودي رامشخص ميكند. |
e | انتقال افقي را مشخص ميكند. |
f | انتقال عمودي را مشخص ميكند. |