ให้เรตสมาชิก: 3 / 5

ดาวใช้งานดาวใช้งานดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

บทที่ 3 HTML5 Canvas
   Canvas  คือ Tag ตัวหนึ่งใน HTML5 ซึ่งเป็นคำสั่งใช้ในการสร้างงานกราฟฟิก จะมี Tag สั้นๆ จำง่ายๆ ก็คือ <canvas></canvas>
ข้อดีของ แท็ก Canvas
    ช่วยเปลี่ยนลูกเล่นการแสดงผลของเว็บเพจไปอีกมากเดิมที HTML เป็นการวาดออบเจคต์ (เช่น ข้อความ รูป กล่องข้อความ ฯลฯ) ขึ้นมาเป็นหน้าจอ และสามารถตกแต่งออบเจคต์แต่ละตัวได้ในระดับหนึ่งผ่าน CSS (เช่น ใส่สีพื้น วาดเส้นขอบ ทำมุมโค้ง) แต่ในภาพรวม HTML ยังไม่สามารถแสดงกราฟิกแบบราสเตอร์ (raster) ได้ด้วยตัวมันเอง ต้องทำภาพมาแปะอีกทอดหนึ่ง แท็ก canvas ที่ถูกเพิ่มเข้ามาช่วยให้เราสามารถ "วาดภาพ" ลงบนเว็บเพจได้โดยตรง โดยขอบเขตของภาพที่วาดก็จะอยู่ในออบเจคต์ชื่อ canvas นั่นเอง
   ลักษณะของ canvas แตกต่างจากภาพชนิดอื่นๆ คือ มันไม่ได้จะแสดงได้เป็นภาพนิ่งเท่านั้น แต่มันสามารถเป็นภาพเคลื่อนไหวได้ด้วย และก็ไม่ได้เกิดจากการเรียกไฟล์ภาพขึ้นมาแสดงตรงๆ แต่เป็นการสั่งโดย javascript ทุกๆเส้นหรือทุกๆจุด และทุกๆการเคลื่อนไหวที่เกิดภายใต้ <canvas> เกิดจากการสั่งงานโดย javascript ทั้งสิ้น แล้วนำเข้ามาโชว์ด้วยการเรียกผ่าน id ของ <canvas> เข้าไป

1.การสร้างกรอบสี่เหลี่ยม

<canvas id="myCanvas" width="200" height="100" style="border:5px solid pink;"></canvas>

ตัวอย่างที่ 1 การสร้างกรอบสี่เหลี่ยม

<html>
<body>

<canvas id="ExCanvas" width="200" height="100"
style="border:5px solid pink;">
Your browser does not support the canvas element.
</canvas>

</body>
</html>

ผลลัพธ์ที่ได้คือ

   จาก HTML ด้านบน เป็นการเรียกให้ canvas id=ExCanvas มาแสดง โดยกำหนดพื้นที่ในการแสดงกว้าง 200 px และสูง 100 px มีกรอบล้อมรอบสีชมพูหนา 5 px
ในกรณีที่ browser ที่ใช้ไม่ support <canvas> จะขึ้นข้อความ Your browser does not support the canvas element

2.การสร้างรูปสี่เหลี่ยม

<script>
  ctx.rect(x, y, width, height);
</script>

จากดครงสร้างด้านบน 
   ใช้ rect() ในการสร้างรูปสี่เหลี่ยม และวางตำแหน่งรูปที่จุด x,y  โดยให้รูปขนาด กว้างและยาว เป็น width , height

ตัวอย่างที่ 2 การสร้างรูปสี่เหลี่ยม

<html>
<html>
<body>

<canvas id="myCanvas" width="200" height="100"
style="border:5px solid pink;">
Your browser does not support the canvas element.
</canvas>

<script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillStyle="red";
ctx.fillRect(0,0,150,75);
</script>

</body>
</html>

ผลลัพธ์ที่ได้คือ
  
    จากตัวอย่างที่ 2 จะเห็นว่าชุดคำสั่ง JavaScript ชุดนี้ได้เข้าถึง Element ที่ ID ที่ชื่อว่า myCanvas นั้นเอง สังเกตได้จากบรรทัด
var c=document.getElementById("myCanvas");  (myCanvas ในที่นี้คือตัวกรอบสีชมพูที่เราสร้างไว้ก่อนแล้ว)
   จากนั้นเมื่อหา Element ดังกล่าวเจอก็จะทำการสร้าง context object ขึ้นมา
var cxt=c.getContext("2d");  คำสั่งบรรทัดนี้ ตรง getContext(?2d?) เป็น built-in object ที่มาพร้อมกับ HTML5 ซึ่งจะประกอบไปด้วยคำสั่งต่างๆ เช่น คำสั่งวาดเส้นตรง วงกลม รูปสี่เหลี่ม ตัวหนังสือ รูปภาพ หรืออื่นๆ

    ต่อมาก็เป็นการสร้างรูปสี่เหลี่ยมพื่นภาพสีแดงขึ้นมา
fillStyle นั้นเป้นการกำหนดสีแดงลงไป ส่วน fillRect เป็นการกำหนด รูปร่าง ตำแหน่ง แล้วก็ขนาดของวัตถุ

cxt.fillStyle="red";
cxt.fillRect(0,0,150,75);
    
    ในที่นี้ cxt.fillRect(0,0,150,75); นี่หมายถึง รูปอยู่ที่จุด (x,y)=(0,0)  และมีขนาดกว้าง 150 px ,  ยาว 75 px
***(cxt. หรือ context.  เป็นชุดคั่งสั่งของ JavaScript)

3.การสร้างเส้นตรง

<script>
  ctx.beginPath();
  cntx.moveTo(x,y);
  cntx.lineTo(x,y);
  cntx.stroke();
  ctx.closePath();
</script>

ตัวอย่างที่ 3 การสร้างเส้นตรง

<html>
<body>

<canvas id="myCanvas" width="200" height="100"
style="border:5px solid pink;">
Your browser does not support the canvas element.
</canvas>

<script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.moveTo(0,0);
ctx.lineTo(200,100);
ctx.stroke();
ctx.closePath();
</script>

</body>
</html>

ผลลัพธ์คือ


4.การสร้างวงกลม

<script>
  cntx.arc(x, y, radius, 0 , 2 * Math.PI, false);
</script>

ตัวอย่างที่ 4 การสร้างรูปวงกลม

<html>
<body>

<canvas id="myCanvas" width="200" height="100"
style="border:5px solid pink;">
Your browser does not support the canvas element.
</canvas>

<script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI);
ctx.stroke();
</script> 

</body>
</html>

ผลลัพธ์ที่ได้คือ


5.การใส่ต้วอักษร

<script>
  cntx.font = 'italic 40px Calibri';
  cntx.fillText(str, x, y);
</script>

จากโครงสร้างด้านบน
   ใช้ font() ในการสร้าง ตัวอักษร  ในตัวอย่างนี้เป็นอักษรแบบ italic (สามารถเลือกเปลี่ยนเป็น bold หรือ normal ก็ได้) ขนาด 40 px
ใช้แบบอักษร เป็น  Calibri
ลักษณะเป็นแบบ fillText (สามารถเลือกเปลี่ยนเป็น strokeText คือ แบบที่มีเฉพาะเส้นขอบ ก็ได้) โดยอักษรอยู่ที่พิกัด x,y

ตัวอย่างที่ 5 การใส่ตัวอักษร

<html>
<body>

<canvas id="myCanvas" width="200" height="100"
style="border:5px solid pink;">
Your browser does not support the canvas element.
</canvas>

<script>

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.font="30px Arial";
ctx.fillText("Hello Nerd",10,50);

</script>

</body>
</html>

ผลลัพธ์คือ

 ข้อมูลอ้างอิง
http://www.w3schools.com

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
Work Shop การรับชำระ ในระบบ Open ERP
โดย EyePornnipa จ 24 มิ.ย. 2019 7:00 pm บอร์ด M089 - นางสาวพรนิภา ราชธานี
0
8
จ 24 มิ.ย. 2019 7:00 pm โดย EyePornnipa
ย่อขนาดรูปด้วยโปรแกรม Gimp
โดย jamepiyawat จ 24 มิ.ย. 2019 6:49 pm บอร์ด Graphic design
0
3
จ 24 มิ.ย. 2019 6:49 pm โดย jamepiyawat
ทำความรู้จักกับ Sensor water flow
โดย Patipat จ 24 มิ.ย. 2019 6:42 pm บอร์ด IOT - Internet of things
0
5
จ 24 มิ.ย. 2019 6:42 pm โดย Patipat
VDO การสร้างลิงค์ แอดเพื่อน ใน Line
โดย chatee supasand จ 24 มิ.ย. 2019 6:15 pm บอร์ด MT33 - นายชาตรี สุภาแสน
0
3
จ 24 มิ.ย. 2019 6:15 pm โดย chatee supasand
B - กด SAVE การรับชำระไม่ได้
โดย EyePornnipa จ 24 มิ.ย. 2019 6:01 pm บอร์ด M.D.Soft Co.,Ltd. - Tester
0
5
จ 24 มิ.ย. 2019 6:01 pm โดย EyePornnipa
มารู้จักตัวแปรชนิด tuple ในภาษา python
โดย jirawoot จ 24 มิ.ย. 2019 5:50 pm บอร์ด Python Knowledge
0
5
จ 24 มิ.ย. 2019 5:50 pm โดย jirawoot
วิธีทำขอบตัวอักษรด้วย Gimp
โดย jamepiyawat จ 24 มิ.ย. 2019 5:17 pm บอร์ด Graphic design
1
15
จ 24 มิ.ย. 2019 6:12 pm โดย mindphp
ตัวอย่างการใช้ Function str_replace() ลบcomma(,) ออกจากจำนวนตัวเลข
โดย Patipat จ 24 มิ.ย. 2019 5:12 pm บอร์ด PHP Knowledge
0
10
จ 24 มิ.ย. 2019 5:12 pm โดย Patipat
การใช้ Script กรอกข้อมูลตัวเลขจำนวนแล้วให้ขึ้นคอมม่า(,)ภาษา PHP
โดย Patipat จ 24 มิ.ย. 2019 4:53 pm บอร์ด Jquery & Ajax Knowledge
0
5
จ 24 มิ.ย. 2019 4:53 pm โดย Patipat
มารู้จักตัวแปร list ในภาษา python
โดย jirawoot จ 24 มิ.ย. 2019 4:47 pm บอร์ด Python Knowledge
0
5
จ 24 มิ.ย. 2019 4:47 pm โดย jirawoot
การ download คลิป ใน youtube ด้วย clipconverter
โดย jirawoot จ 24 มิ.ย. 2019 3:46 pm บอร์ด Share Knowledge
0
7
จ 24 มิ.ย. 2019 3:46 pm โดย jirawoot
เมื่อคุณลงโปรแกรมอะไรสักอย่างแล้วเกิดเหตุการณ์แบบนี้ขึ้น
โดย chatee supasand จ 24 มิ.ย. 2019 3:19 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
6
จ 24 มิ.ย. 2019 3:19 pm โดย chatee supasand
การใช้ Script กรอกข้อมูลตัวเลขจำนวนแล้วให้ขึ้นคอมม่า(,)ภาษา PHP
โดย Patipat จ 24 มิ.ย. 2019 2:44 pm บอร์ด JavaScript & Jquery Ajax
0
7
จ 24 มิ.ย. 2019 2:44 pm โดย Patipat
VDO การใช้งาน ระบบ ERP และเรียนรู้งานบริการของบริษัท
โดย EyePornnipa จ 24 มิ.ย. 2019 2:40 pm บอร์ด M089 - นางสาวพรนิภา ราชธานี
0
27
จ 24 มิ.ย. 2019 2:40 pm โดย EyePornnipa
B - รบกวนตรวจสอบปัญหาการสั่งซื้อของลูกค้าด่วนครับ [2019-06][021]
โดย tsukasaz จ 24 มิ.ย. 2019 2:27 pm บอร์ด Diageo - Web Ordering - Tester
1
2
จ 24 มิ.ย. 2019 3:15 pm โดย tsukasaz
เปลี่ยนเว็บให้ต่างประเทศเป็นภาษาไทย google แปลภาษา
โดย jamepiyawat จ 24 มิ.ย. 2019 12:44 pm บอร์ด Share Knowledge
0
11
จ 24 มิ.ย. 2019 12:44 pm โดย jamepiyawat
อยากทราบวิธีใช้ Script พอกดเลขแล้วให้ขึ้นคอมม่า(,)ภาษา PHP
โดย Patipat จ 24 มิ.ย. 2019 11:39 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
2
18
จ 24 มิ.ย. 2019 2:10 pm โดย Patipat
Windows Terminal เวอร์ชั่นใหม่ออกมาแล้ว ดาวน์โหลดได้เลยที่ Microsoft Store
โดย chatee supasand จ 24 มิ.ย. 2019 11:26 am บอร์ด Microsoft Office Knowledge & line & Etc
0
4
จ 24 มิ.ย. 2019 11:26 am โดย chatee supasand
ใน phpbb 3.1 ถ้าเราต้องการเปิดสิทธิ์ให้ user สามารถแก้ไข โพสต์ user อื่นได้ต้องตั้งค่ายังไงค่ะ
โดย thatsawan จ 24 มิ.ย. 2019 11:13 am บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
0
8
จ 24 มิ.ย. 2019 11:13 am โดย thatsawan
B - การแสดงผล Database Summary [2019-06][007]
โดย tsukasaz จ 24 มิ.ย. 2019 10:56 am บอร์ด IIEC - Feedback Service System - Tester
1
2
จ 24 มิ.ย. 2019 11:54 am โดย tsukasaz