HTML5之Canvas畫布


先上代碼:

<canvas width="1000" height="800">瀏覽器不支持HTML5!</canvas>
  <script type="text/javascript">
        var canvas = document.querySelector("canvas");
        var context = canvas.getContext('2d');

        // 設置陰影
        context.shadowOffsetX = 5.0;
        context.shadowOffsetY = 5.0;
        context.shadowColor = "rgba(50%,50%,50%,0.75)";
        context.shadowBlur = 10.0;
        
        // 畫一個矩形圖形
        context.fillStyle = 'red';
        context.fillRect(2, 2, 300, 200);
        
        // 加邊框
        context.strokeRect(0, 0, 304, 204);
        
        // 畫一個矩形
        context.fillStyle = 'rgba(255,255,0,0.5)';
        context.fillRect(250, 150, 300, 200);

        // 清除指定區域
        context.clearRect(350, 200, 100, 100);
    </script>

- Rectangles 繪制矩形對象

- context.fillRect(x,y,w,h) // 繪制矩形
- context.strokeRect(x,y,w,h) // 繪制邊框
- context.clearRect(x,y,w,h) // 清除指定區域

- Colors 設置顏色

- 指定顏色(紅色)

指定方法 顏色值
-----------------------------
Hexa(十六進制) #FF0000
Hexa(short) #F00
RGB rgb(255,0,0)
RGB(percent) rgb(100%,0%,0%)
RGBA rgb(255,0,0,0.7)
RGBA(percent) rgba(100%,0%,0%,0.7)
HSL hsl(0,100%,50%)
HSLA hsla(0,100%,50%,1.0)
SVG(顏色名字) red


- shadow 陰影

  context.shadowOffsetX = 5.0;
  context.shadowOffsetY = 5.0;
  context.shadowColor = "rgba(50%,50%,50%,0.75)";
  context.shadowBlur = 10.0;

- Gradients 漸變

- 1.線性漸變

 // 起始位置截至位置
  var linGrad = context.createLinearGradient(0,450,1000,450);

  // 漸變中節點
  linGrad.addColorStop(0.0,'red');
  linGrad.addColorStop(0.5,'yellow');
  linGrad.addColorStop(0.7,'orange');
  linGrad.addColorStop(1.0,'purple');

  // 應用到圖形上
  context.fillStyle = linGrad;
  context.fillRect(0,450,1000,450);

- 2. 中心區域漸變

  // 6組數字,代表 2 個圓
  var radGrad = context.createRadialGradient(260,320,40,200,400,200);

  radGrad.addColorStop(0.0, 'yellow');
  radGrad.addColorStop(0.9, 'orange');
  radGrad.addColorStop(1.0, 'rgba(0,0,0,0)');

  context.fillStyle = radGrad;
  context.fillRect(0, 200, 400, 400);

- Paths 繪制路徑線條

- 繪制過程
1.開始繪制 beginPath()
2.定義所有節點
3.用stroke實現繪制

CreateLineA();          // 繪制一個 A 型
CreateQua();            // 繪制一條 拋物線
CreateBez();            // 繪制一條 貝塞爾曲線
CreateArc();            // 繪制一個 自定義曲線
CreateRoundedRect();    // 繪制一個 圓角圖形
CreateRect();           // 繪制一個 矩形

// 繪制一個 A 型
function CreateLineA() {
    context.fillStyle = 'red';
    context.strokeRect(0, 0, 300, 300); // 繪制邊框
    // 1. 開始繪制beginPath()
    context.beginPath();

    // 2. 定義所有節點
    context.moveTo(100, 200);   // 將筆移動到該坐標
    context.lineTo(150, 50);     // 繪制到指定坐標
    context.lineTo(200, 200);   // 再接着繪制到另一個坐標

    context.moveTo(100, 120);   // 再將筆移動到別的區域
    context.lineTo(200, 120);   // 再繪制一條線
    

    context.textAlign = 'left';                 // 設置水平對齊
    context.textBaseline = 'alphabetic';        // 設置垂直對齊
    context.font = 'bold 16px sans-serif';      // 設置輸出字體樣式
    context.fillText('(100/200)', 50, 220);     // 在指定坐標輸出文字
    context.fillText('(150/50)', 115, 30);
    context.fillText('(200/200)', 150, 220);
    context.fillText('(100/120)', 40, 100);
    context.fillText('(200/120)', 180, 100);

    // 3. 用stroke實現繪制
    context.stroke();
}

// 繪制一條拋物線
function CreateQua() {
    context.strokeRect(320, 0, 300, 300); // 繪制邊框

    context.beginPath();
    context.moveTo(350, 250);
    context.quadraticCurveTo(400, 50, 600, 50);
    context.stroke();
}

// 繪制一條貝塞爾曲線
function CreateBez() {
    context.strokeRect(640, 0, 300, 300); // 繪制邊框

    context.beginPath();
    context.moveTo(670, 250);
    context.bezierCurveTo(880, 300, 700, 30, 900, 50);
    context.stroke();
}

// 繪制一個 自定義曲線
function CreateArc() {
    context.strokeRect(0, 320, 300, 300); // 繪制邊框
    context.beginPath();
    context.moveTo(20, 430);
    context.arcTo(20, 370, 270, 370, 60);
    context.stroke();
}

//  繪制一個 圓角圖形
function CreateRoundedRect() {
    context.strokeRect(320, 320, 300, 300); // 繪制邊框

    x = 340;
    y = 370;
    w = 250;
    h = 200;
    r = 60;

    context.beginPath();
    context.moveTo(x, y + r);
    context.arcTo(x, y, x + w, y, r);
    context.arcTo(x + w, y, x + w, y + h, r);
    context.arcTo(x + w, y + h, x, y + h, r);
    context.arcTo(x, y + h, x, y, r);
    context.closePath();    // 閉合曲線
    context.stroke();
}

// 繪制一個矩形對象
function CreateRect() {
    context.strokeRect(640, 320, 300, 300); // 繪制邊框

    context.beginPath();
    context.rect(660,340,250,250); 
    context.stroke();
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM