Hướng dẫn html5 canvas tutorials - hướng dẫn canvas html5

bởi Nguyễn Văn Hợi vào 09/07/2019. Lượt xem: 1,555Nguyễn Văn Hợi vào 09/07/2019. Lượt xem: 1,555

Với việc sử dụng thư viện

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");

// Create gradient
var grd = ctx.createLinearGradient(0, 0, 200, 0);
grd.addColorStop(0, "red");
grd.addColorStop(1, "white");

// Fill with gradient
ctx.fillStyle = grd;
ctx.fillRect(10, 10, 150, 80);
3, ta đã có thêm một tùy chọn nữa trong việc vẽ đồ thị, hình động hoặc cao hơn là viết các game nhỏ.

Cám ơn các bạn đã đọc bài viết của mình và mong rằng chúng ta sẽ có những trao đổi hữu ích thông qua bài viết này.

Tham Khảo

HTML5 Canvas Tutorial: An Introduction

Mozilla Develop Network

Canvas là một vùng hình chữ nhật trên trang HTML. Mặc định thì canvas không có viền và nội dung.

HTML Canvas là gì.         

<canvas id="myCanvas" width="200" height="100"></canvas>

Phần tử HTML được sử dụng để vẽ đồ họa một cách nhanh chóng bằng JavaScript trên một trang web.của canvas, để thêm border dùng thuộc tính style.

Phần tử chỉ là một bộ chứa cho đồ họa, bạn phải dùng JavaScript để vẽ chúng.

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">
</canvas>

Canvas có nhiều phương thức để vẽ, đường thẳng, hình hộp, hình tròn, văn bản, và thêm ảnh.

Ví dụ về Canvas

<!DOCTYPE html>

<html>

<body>



<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">

Trình duyệt của bạn không hỗ trợ canvas.</canvas>



<script>

var c = document.getElementById("myCanvas");

var ctx = c.getContext("2d");

ctx.moveTo(0,0);

ctx.lineTo(200,100);

ctx.stroke();

</script>



</body>

</html>

Canvas là một vùng hình chữ nhật trên trang HTML. Mặc định thì canvas không có viền và nội dung.

Ví dụ về Canvas

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

Canvas là một vùng hình chữ nhật trên trang HTML. Mặc định thì canvas không có viền và nội dung.

Ví dụ về Canvas

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

Canvas là một vùng hình chữ nhật trên trang HTML. Mặc định thì canvas không có viền và nội dung.

Ví dụ về Canvas

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

Canvas là một vùng hình chữ nhật trên trang HTML. Mặc định thì canvas không có viền và nội dung.

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");

// Create gradient
var grd = ctx.createLinearGradient(0, 0, 200, 0);
grd.addColorStop(0, "red");
grd.addColorStop(1, "white");

// Fill with gradient
ctx.fillStyle = grd;
ctx.fillRect(10, 10, 150, 80);

Cú pháp như sau:

Ví dụ về Canvas

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");

// Create gradient
var grd = ctx.createRadialGradient(75, 50, 5, 90, 60, 100);
grd.addColorStop(0, "red");
grd.addColorStop(1, "white");

// Fill with gradient
ctx.fillStyle = grd;
ctx.fillRect(10, 10, 150, 80);

Canvas là một vùng hình chữ nhật trên trang HTML. Mặc định thì canvas không có viền và nội dung.

Ví dụ về Canvas

<!DOCTYPE html>

<html>

<body>



<p>Image to use:</p>

<img id="scream" src="img_the_scream.jpg" alt="The Scream" width="220" height="277">



<p>Canvas to fill:</p>

<canvas id="myCanvas" width="250" height="300"

style="border:1px solid #d3d3d3;">

Your browser does not support the HTML5 canvas tag.</canvas>



<p><button onclick="myCanvas()">Try it</button></p>



<script>

function myCanvas() {

  var c = document.getElementById("myCanvas");

  var ctx = c.getContext("2d");

  var img = document.getElementById("scream");

  ctx.drawImage(img,10,10);

}

</script>



</body>

</html>

Canvas là một vùng hình chữ nhật trên trang HTML. Mặc định thì canvas không có viền và nội dung.

Với việc sử dụng thư viện var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); // Create gradient var grd = ctx.createLinearGradient(0, 0, 200, 0); grd.addColorStop(0, "red"); grd.addColorStop(1, "white"); // Fill with gradient ctx.fillStyle = grd; ctx.fillRect(10, 10, 150, 80);3, ta đã có thêm một tùy chọn nữa trong việc vẽ đồ thị, hình động hoặc cao hơn là viết các game nhỏ.

Cám ơn các bạn đã đọc bài viết của mình và mong rằng chúng ta sẽ có những trao đổi hữu ích thông qua bài viết này.

Hướng dẫn html5 canvas tutorials - hướng dẫn canvas html5

Tham Khảo

HTML5 Canvas Tutorial: An Introduction

  • Mozilla Develop Network
  • Vẽ hình tròn
  • 1. HTML5 Canvas là gì?#
  • Canvas là một phần tử của HTML5, cho phép thực hiện lập trình kết xuất đồ họa các đối tượng hai chiều trên trang web. Canvas chiếm một khu vực trong trang web với chiều rộng và chiều cao định trước. Sau đó sử dụng Javascript có thể truy cập vào khu vực này để vẽ thông qua một tập các hàm đồ họa tương tự như các API 2D khác.
  • 2. Tại sao lại dùng Canvas?#
  • Bởi vì Canvas có thể giúp hiển thị trực quan một số hình ảnh dễ dàng trên trình duyệt như:

Các sơ đồ đơn giản

Trang trí thêm cho giao diện người dùng

Hình ảnh động

  • Biểu đồ và đồ thị
<canvas id="exampleCanvas" width="500" height="300">

  <!-- OPTION 1: leave a message here if browser doesn't support canvas -->
    <p>Your browser doesn’t currently support HTML5 Canvas.
    Please check caniuse.com/#feat=canvas for information on
    browser support for canvas.</p>

  <!-- OPTION 2: put fallback content (text, image, Flash, etc.)
                 if the browser doesn't support canvas -->
</canvas>

Có thể nhúng các ứng dụng vẽ

  • Hoạt động tốt với những hạn chế của CSS.
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">
</canvas>
0

3. Cách tạo thẻ Canvas#

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">
</canvas>
1

Sử dụng Canvas không khó nhưng bạn cần có 1 ít kiến thức về Html và Javascript. Một số trình duyệt cũ không hỗ trợ canvas, bạn nên sử dụng Firefox 1.5 trở về sau, Opera 9 hoặc phiên bản mới hơn… Bạn có thể tham khảo thêm tại đây: http://caniuse.com/canvas

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">
</canvas>
2

Canvas chiếm một khu vực hình chữ nhật trên trang web mà kích thước của hình chữ nhật được quy định bởi nó. Lưu ý: Mặc định thẻ canvas sẽ không có đường viền và nội dung rỗng.

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">
</canvas>
3

Khai báo thẻ như sau:

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">
</canvas>
4

Lưu ý: Các thuộc tính và kích thước thường được xác định ngay bên trong thẻ canvas. Bạn có thể có nhiều thẻ

<!DOCTYPE html>

<html>

<body>



<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">

Trình duyệt của bạn không hỗ trợ canvas.</canvas>



<script>

var c = document.getElementById("myCanvas");

var ctx = c.getContext("2d");

ctx.moveTo(0,0);

ctx.lineTo(200,100);

ctx.stroke();

</script>



</body>

</html>
2 trên một trang HTML. Mặc định, thẻ canvas chỉ có 2 phần tử:
<!DOCTYPE html>

<html>

<body>



<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">

Trình duyệt của bạn không hỗ trợ canvas.</canvas>



<script>

var c = document.getElementById("myCanvas");

var ctx = c.getContext("2d");

ctx.moveTo(0,0);

ctx.lineTo(200,100);

ctx.stroke();

</script>



</body>

</html>
3 và
<!DOCTYPE html>

<html>

<body>



<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">

Trình duyệt của bạn không hỗ trợ canvas.</canvas>



<script>

var c = document.getElementById("myCanvas");

var ctx = c.getContext("2d");

ctx.moveTo(0,0);

ctx.lineTo(200,100);

ctx.stroke();

</script>



</body>

</html>
4. Nếu không được chỉ ra kích thước, thì kích thước mặc định là
<!DOCTYPE html>

<html>

<body>



<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">

Trình duyệt của bạn không hỗ trợ canvas.</canvas>



<script>

var c = document.getElementById("myCanvas");

var ctx = c.getContext("2d");

ctx.moveTo(0,0);

ctx.lineTo(200,100);

ctx.stroke();

</script>



</body>

</html>
5 chiều rộng và
<!DOCTYPE html>

<html>

<body>



<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">

Trình duyệt của bạn không hỗ trợ canvas.</canvas>



<script>

var c = document.getElementById("myCanvas");

var ctx = c.getContext("2d");

ctx.moveTo(0,0);

ctx.lineTo(200,100);

ctx.stroke();

</script>



</body>

</html>
6 chiều cao.

Ví dụ tạo đường viền cho thẻ canvas

Vẽ trên Canvas với Javascript

Hướng dẫn html5 canvas tutorials - hướng dẫn canvas html5
Canvas là một dạng tọa độ lưới
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95, 50, 40, 0, 2 * Math.PI);
ctx.stroke();
2.

Giải thích cho ví dụ trên: Trước tiên, ta tìm đến thẻ

<!DOCTYPE html>

<html>

<body>



<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">

Trình duyệt của bạn không hỗ trợ canvas.</canvas>



<script>

var c = document.getElementById("myCanvas");

var ctx = c.getContext("2d");

ctx.moveTo(0,0);

ctx.lineTo(200,100);

ctx.stroke();

</script>



</body>

</html>
2 thông qua id của nó:

Sau đó, gọi hàm

<!DOCTYPE html>

<html>

<body>



<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">

Trình duyệt của bạn không hỗ trợ canvas.</canvas>



<script>

var c = document.getElementById("myCanvas");

var ctx = c.getContext("2d");

ctx.moveTo(0,0);

ctx.lineTo(200,100);

ctx.stroke();

</script>



</body>

</html>
8 (nhập chuỗi “2d” vào):

  • Đối tượng

    <!DOCTYPE html>
    
    <html>
    
    <body>
    
    
    
    <canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">
    
    Trình duyệt của bạn không hỗ trợ canvas.</canvas>
    
    
    
    <script>
    
    var c = document.getElementById("myCanvas");
    
    var ctx = c.getContext("2d");
    
    ctx.moveTo(0,0);
    
    ctx.lineTo(200,100);
    
    ctx.stroke();
    
    </script>
    
    
    
    </body>
    
    </html>
    9 trong HTML5 sở hữu nhiều hàm dành cho vẽ hình ảnh như hình hộp, hình tròn, chữ,… 2 dòng sau vẽ ra một hình chữ nhật:

    Thuộc tính

    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    ctx.beginPath();
    ctx.arc(95, 50, 40, 0, 2 * Math.PI);
    ctx.stroke();
    0 được dùng để gán CSS.

    • Thuộc tính
      var c = document.getElementById("myCanvas");
      var ctx = c.getContext("2d");
      ctx.beginPath();
      ctx.arc(95, 50, 40, 0, 2 * Math.PI);
      ctx.stroke();
      1 để vẽ hình chữ nhật với các tham số tọa độ x,y, chiều rộng, chiều cao.
    • Tọa độ Canvas Canvas là một dạng tọa độ lưới
      var c = document.getElementById("myCanvas");
      var ctx = c.getContext("2d");
      ctx.beginPath();
      ctx.arc(95, 50, 40, 0, 2 * Math.PI);
      ctx.stroke();
      2.

    Góc trên cùng bên trái của đối tượng canvas có tọa độ

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

    Vậy nên, hàm

    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    ctx.beginPath();
    ctx.arc(95, 50, 40, 0, 2 * Math.PI);
    ctx.stroke();
    4 ở trên được thiết lập các tham số
    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    ctx.beginPath();
    ctx.arc(95, 50, 40, 0, 2 * Math.PI);
    ctx.stroke();
    5 có nghĩa là nằm sát phía trên bên trái và có kích thước là
    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    ctx.beginPath();
    ctx.arc(95, 50, 40, 0, 2 * Math.PI);
    ctx.stroke();
    6 pixels.

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

Canvas – Vẽ đường thẳng

Hướng dẫn html5 canvas tutorials - hướng dẫn canvas html5

  • Để vẽ đường thẳng trên một đối tượng canvas, ta sẽ dùng 2 hàm sau:

    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    ctx.beginPath();
    ctx.arc(95, 50, 40, 0, 2 * Math.PI);
    ctx.stroke();
    7 định điểm bắt đầu

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

    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    ctx.beginPath();
    ctx.arc(95, 50, 40, 0, 2 * Math.PI);
    ctx.stroke();
    8 định điểm kết thúc

    Sau khi có 2 điểm ta phải dùng một trong những hàm vẽ đường thẳng, chẳng hạn như

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

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">
</canvas>
6

Ví dụ: Định điểm bắt đầu

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95, 50, 40, 0, 2 * Math.PI);
ctx.stroke();
3 và điểm kết thúc là
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.font = "30px Arial";
ctx.fillText("Hello World", 10, 50);
1. Sau đó dùng hàm
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95, 50, 40, 0, 2 * Math.PI);
ctx.stroke();
9 vẽ một đường thẳng
Hướng dẫn html5 canvas tutorials - hướng dẫn canvas html5

  • Kết quả

    Canvas – Vẽ hình tròn

    • Để vẽ một hình tròn trên canvas, chúng ta sử dụng hàm
      var c = document.getElementById("myCanvas");
      var ctx = c.getContext("2d");
      ctx.font = "30px Arial";
      ctx.fillText("Hello World", 10, 50);
      3:
    • Sau khi xác định được tọa độ và bán kính, ta phải dùng một hàm vẽ nét chẳng hạn như stroke() hoặc fill().
    • Ví dụ: Tạo một hình tròn có tọa độ tại tâm là
      var c = document.getElementById("myCanvas");
      var ctx = c.getContext("2d");
      ctx.font = "30px Arial";
      ctx.fillText("Hello World", 10, 50);
      5, bán kính
      var c = document.getElementById("myCanvas");
      var ctx = c.getContext("2d");
      ctx.font = "30px Arial";
      ctx.fillText("Hello World", 10, 50);
      6

    Kết quả

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">
</canvas>
7

Ví dụ: Định điểm bắt đầu

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95, 50, 40, 0, 2 * Math.PI);
ctx.stroke();
3 và điểm kết thúc là
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.font = "30px Arial";
ctx.fillText("Hello World", 10, 50);
1. Sau đó dùng hàm
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95, 50, 40, 0, 2 * Math.PI);
ctx.stroke();
9 vẽ một đường thẳng
Hướng dẫn html5 canvas tutorials - hướng dẫn canvas html5

  • Kết quả

    Canvas – Vẽ hình tròn

    • Để vẽ một hình tròn trên canvas, chúng ta sử dụng hàm
      var c = document.getElementById("myCanvas");
      var ctx = c.getContext("2d");
      ctx.font = "30px Arial";
      ctx.fillText("Hello World", 10, 50);
      3:
    • Sau khi xác định được tọa độ và bán kính, ta phải dùng một hàm vẽ nét chẳng hạn như stroke() hoặc fill().

    Ví dụ: Tạo một hình tròn có tọa độ tại tâm là

    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    ctx.font = "30px Arial";
    ctx.fillText("Hello World", 10, 50);
    5, bán kính
    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    ctx.font = "30px Arial";
    ctx.fillText("Hello World", 10, 50);
    6

    Ví dụ: Dùng

    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    
    // Create gradient
    var grd = ctx.createLinearGradient(0, 0, 200, 0);
    grd.addColorStop(0, "red");
    grd.addColorStop(1, "white");
    
    // Fill with gradient
    ctx.fillStyle = grd;
    ctx.fillRect(10, 10, 150, 80);
    0

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">
</canvas>
8

Kết quả:

Hướng dẫn html5 canvas tutorials - hướng dẫn canvas html5

  • Canvas – Hình ảnh

    Để vẽ hình ảnh trên một ô canvas, ta dùng hàm

    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    
    // Create gradient
    var grd = ctx.createLinearGradient(0, 0, 200, 0);
    grd.addColorStop(0, "red");
    grd.addColorStop(1, "white");
    
    // Fill with gradient
    ctx.fillStyle = grd;
    ctx.fillRect(10, 10, 150, 80);
    1:

    • var c = document.getElementById("myCanvas");
      var ctx = c.getContext("2d");
      
      // Create gradient
      var grd = ctx.createLinearGradient(0, 0, 200, 0);
      grd.addColorStop(0, "red");
      grd.addColorStop(1, "white");
      
      // Fill with gradient
      ctx.fillStyle = grd;
      ctx.fillRect(10, 10, 150, 80);
      2

    Ví dụ: Vẽ hình ảnh trên một ô canvas

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">
</canvas>
9

Kết quả:

Hướng dẫn html5 canvas tutorials - hướng dẫn canvas html5

Canvas – Hình ảnh

  • Vẽ cờ Việt Nam: http://jsfiddle.net/z7werpqv/2/
<!DOCTYPE html>

<html>

<body>



<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">

Trình duyệt của bạn không hỗ trợ canvas.</canvas>



<script>

var c = document.getElementById("myCanvas");

var ctx = c.getContext("2d");

ctx.moveTo(0,0);

ctx.lineTo(200,100);

ctx.stroke();

</script>



</body>

</html>
0

Kết quả:

Hướng dẫn html5 canvas tutorials - hướng dẫn canvas html5

  • Vẽ cờ Nhật Bản: http://jsfiddle.net/vs77sney/
<!DOCTYPE html>

<html>

<body>



<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">

Trình duyệt của bạn không hỗ trợ canvas.</canvas>



<script>

var c = document.getElementById("myCanvas");

var ctx = c.getContext("2d");

ctx.moveTo(0,0);

ctx.lineTo(200,100);

ctx.stroke();

</script>



</body>

</html>
1

Kết quả:

Hướng dẫn html5 canvas tutorials - hướng dẫn canvas html5

Vẽ cờ Nhật Bản: http://jsfiddle.net/vs77sney/

5. Kết luận

Với việc sử dụng thư viện

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");

// Create gradient
var grd = ctx.createLinearGradient(0, 0, 200, 0);
grd.addColorStop(0, "red");
grd.addColorStop(1, "white");

// Fill with gradient
ctx.fillStyle = grd;
ctx.fillRect(10, 10, 150, 80);
3, ta đã có thêm một tùy chọn nữa trong việc vẽ đồ thị, hình động hoặc cao hơn là viết các game nhỏ.

Cám ơn các bạn đã đọc bài viết của mình và mong rằng chúng ta sẽ có những trao đổi hữu ích thông qua bài viết này.

  • Tham Khảo
  • HTML5 Canvas Tutorial: An Introduction

Mozilla Develop Network