ให้เรตสมาชิก: 4 / 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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
MOD_MTB_NEWS_RECENT
ขอความช่วยเหลือ ปัญหาการ restart service
โดย bom_002 จ 27 มี.ค. 2017 8:25 pm บอร์ด OpenERP
0
9
จ 27 มี.ค. 2017 8:25 pm โดย bom_002
B - Validate customer payment ไม่ได้
โดย thatsawan จ 27 มี.ค. 2017 7:01 pm บอร์ด OpenERP Light Tester
0
3
จ 27 มี.ค. 2017 7:01 pm โดย thatsawan
ถามวิธีการแก้ตารางล้นกรอบ
โดย dawthana จ 27 มี.ค. 2017 6:16 pm บอร์ด OpenERP
0
7
จ 27 มี.ค. 2017 6:16 pm โดย dawthana
ติดตั้ง Google Chrome(กรูเกิลโครม) บน ubuntu 16.04
โดย bom_002 จ 27 มี.ค. 2017 5:11 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
10
จ 27 มี.ค. 2017 5:11 pm โดย bom_002
การติดตั้ง Skype(สไกป์) บนระบบปฏิบัติการ ubuntu 16.04
โดย bom_002 จ 27 มี.ค. 2017 4:01 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
15
จ 27 มี.ค. 2017 4:01 pm โดย bom_002
Laragon โปรแกรมจำลอง Server สำหรับพัฒนาเว็บไซต์ด้วยภาษา PHP
โดย tsukasaz จ 27 มี.ค. 2017 3:45 pm บอร์ด Weekly Knowledge
2
8
จ 27 มี.ค. 2017 3:45 pm โดย mindphp
GRUB (Restoring GRUB) คืออะไร
โดย bom_002 จ 27 มี.ค. 2017 12:32 pm บอร์ด Linux - Web Server
0
15
จ 27 มี.ค. 2017 12:32 pm โดย bom_002
รายงานประจำวันที่ 27 มีนาคม 2560
โดย bom_002 จ 27 มี.ค. 2017 10:15 am บอร์ด M043 - นพรัตน์ เกษเจริญคุณ
3
8
จ 27 มี.ค. 2017 10:15 am โดย bom_002
TODO - extension ปิดสิทธิ์ไม่ให้สมาชิกส่ง PM หากันได้ ยกเว้น ส่งหา admin
โดย thatsawan อ 26 มี.ค. 2017 11:35 pm บอร์ด phpBB3 Mods & Extensions
0
1
อ 26 มี.ค. 2017 11:35 pm โดย thatsawan
เมื่อลงโปรแกรม ubuntu 16.04 ใกล้เสร็จแล้ว แต่เกิด error ขึ้นครับ
โดย bom_002 ส 25 มี.ค. 2017 5:13 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
2
31
ส 25 มี.ค. 2017 5:13 pm โดย mindphp
วิธีแก้ error UnicodeDecodeError: 'ascii' ด้วย ตัวแปล,encode('utf-8','ignore') ปัญหาจากข้อมูลที่เป็นภาษาไทย
โดย thatsawan ส 25 มี.ค. 2017 3:23 pm บอร์ด OpenERP
0
5
ส 25 มี.ค. 2017 3:23 pm โดย thatsawan
วิธีเปลี่ยนรูปแบบวันที่ ปี- เดือน - วัน เวลา [2017-02-23 05:00:00] -> วัน - เดือน - ปี [23 - 02 -2017]
โดย thatsawan ส 25 มี.ค. 2017 3:04 pm บอร์ด OpenERP
0
1
ส 25 มี.ค. 2017 3:04 pm โดย thatsawan
วิธีเปิด debug เเละวิธีการใช้ _logger.debug
โดย thatsawan ส 25 มี.ค. 2017 2:43 pm บอร์ด OpenERP
0
3
ส 25 มี.ค. 2017 2:43 pm โดย thatsawan
วิธีการสร้าง USB boot(ยูเอสบี บูท) บนระบบปฏิบัติการ Ubuntu(ยูบันตู)
โดย bom_002 ส 25 มี.ค. 2017 11:50 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
18
ส 25 มี.ค. 2017 11:50 am โดย bom_002
วิธีการ format(ฟอแมต) และลบ partition(พาสดิชัน) ของ USB disk(ยูเอสบี ดิส) ด้วย command line(คอมมาน ไล)
โดย bom_002 ส 25 มี.ค. 2017 11:13 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
22
ส 25 มี.ค. 2017 11:13 am โดย bom_002
รายงานประจำวันที่ 25 มีนาคม 2560
โดย bom_002 ส 25 มี.ค. 2017 10:11 am บอร์ด M043 - นพรัตน์ เกษเจริญคุณ
3
11
ส 25 มี.ค. 2017 10:11 am โดย bom_002
ต้องการจัดทำระบบ CRM ค่ะต้องทำยังไงบ้างคะ อย
โดย Sawika Maekai ส 25 มี.ค. 2017 4:13 am บอร์ด Programming - PHP
1
22
ส 25 มี.ค. 2017 4:13 am โดย mindphp
อยากสอบถามเรื่องการทำโปรแกรม CRM ค่ะ
โดย Sawika Maekai ส 25 มี.ค. 2017 4:12 am บอร์ด Programming - PHP
0
9
ส 25 มี.ค. 2017 4:12 am โดย Sawika Maekai
ติดตั้ง Pycharm(ไพชาม) บนระบบปฏิบัติการ Ubuntu(อูบันตู)
โดย bom_002 ศ 24 มี.ค. 2017 8:24 pm บอร์ด Linux - Web Server
1
23
ศ 24 มี.ค. 2017 8:24 pm โดย bom_002
R - List module OpenERP และ Odoo
โดย M032 ศ 24 มี.ค. 2017 7:14 pm บอร์ด shop.mindphp.com
0
2
ศ 24 มี.ค. 2017 7:14 pm โดย M032