首頁 > web前端 > H5教程 > 主體

HTML5 Canvas繪製時指定顏色與透明度的方法

不言
發布: 2018-06-05 14:02:38
原創
2916 人瀏覽過

這篇文章主要介紹了HTML5 Canvas繪製時指定顏色與透明度的方法,包括全域透明globalAlpha屬性的介紹,需要的朋友可以參考下

#指定顏色

黑色是Canvas繪製的預設色彩,要換一種顏色的話,就得在實際畫之前指定顏色。

JavaScript Code複製內容到剪貼簿

ctx.strokeStyle = color
登入後複製

指定繪製線的顏色:

JavaScript Code複製內容到剪貼簿

ctx.fillStyle = color
登入後複製

指定填滿的顏色:

來看看實際的範例:

JavaScript

JavaScript Code複製內容到剪貼簿

onload = function() {   
  draw();   
};   
function draw() {   
  var canvas = document.getElementById('c1');   
  if ( ! canvas || ! canvas.getContext ) { return false; }   
  var ctx = canvas.getContext('2d');   
  ctx.beginPath();   
  ctx.fillStyle = 'rgb(192, 80, 77)'; // 红 
  ctx.arc(70, 45, 35, 0, Math.PI*2, false);   
  ctx.fill();   
  ctx.beginPath();   
  ctx.fillStyle = 'rgb(155, 187, 89)'; // 绿 
  ctx.arc(45, 95, 35, 0, Math.PI*2, false);   
  ctx.fill();   
  ctx.beginPath();   
  ctx.fillStyle = 'rgb(128, 100, 162)'; // 紫 
  ctx.arc(95, 95, 35, 0, Math.PI*2, false);   
  ctx.fill();   
}
登入後複製

效果如下圖:
2016325112217008.png (142×142)

##指定透明度

和普通的CSS中一樣,我們指定顏色的時候還可以帶一個alpha值(不過用的不多,IE9之前都不支援)。看程式碼:

JavaScript

JavaScript Code複製內容到剪貼簿

onload = function() {   
  draw();   
};   
function draw() {   
  var canvas = document.getElementById('c1');   
  if ( ! canvas || ! canvas.getContext ) { return false; }   
  var ctx = canvas.getContext('2d');   
  ctx.beginPath();   
  ctx.fillStyle = 'rgba(192, 80, 77, 0.7)'; // 
  ctx.arc(70, 45, 35, 0, Math.PI*2, false);   
  ctx.fill();   
  ctx.beginPath();   
  ctx.fillStyle = 'rgba(155, 187, 89, 0.7)'; // 
  ctx.arc(45, 95, 35, 0, Math.PI*2, false);   
  ctx.fill();   
  ctx.beginPath();   
  ctx.fillStyle = 'rgba(128, 100, 162, 0.7)'; // 
  ctx.arc(95, 95, 35, 0, Math.PI*2, false);   
  ctx.fill();   
}
登入後複製

結果就是下面這樣:


2016325112248089.png (142×142)

和上面的程式碼基本上沒變化,就是把rgb(r, g, b)變成了rgba(r, g, b, a)而已,a的值也是0~1, 0表示完全透明,1則是完全不透明(所以alpha的值其實是「不透明度」)。


全域透明globalAlpha
這個也是很簡單的一個屬性,預設值為1.0,代表完全不透明,取值範圍是0.0(完全透明)~1.0。這個屬性與陰影設定是一樣的,如果不想針對全域設定不透明度,就得在下次繪製前重置globalAlpha。

總結一下:基於狀態的屬性有哪些?

——globalAlpha

——globalCompositeOpeartion

——strokeStyle

——textAlign,textBaseline

——lineCap,lineJoin, lineWidth,miterLimit

——fillStyle

——font

——shadowBlur,shadowColor,shadowOffsetX,shadowOffsetY

我們透過一個程式碼,來體驗一下globalAlpha的神奇之處~

JavaScript Code複製內容到剪貼簿

<!DOCTYPE html>   
<html lang="zh">   
<head>   
    <meta charset="UTF-8">   
    <title>全局透明</title>   
    <style>   
        body { background: url("./images/bg3.jpg") repeat; } 
        #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; } 
    </style>   
</head>   
<body>   
<p id="canvas-warp">   
    <canvas id="canvas">   
        你的浏览器居然不支持Canvas?!赶快换一个吧!!   
    </canvas>   
</p>   
<script>   
    window.onload = function(){   
        var canvas = document.getElementById("canvas");   
        canvas.width = 800;   
        canvas.height = 600;   
        var context = canvas.getContext("2d");   
        context.fillStyle = "#FFF";   
        context.fillRect(0,0,800,600);   
        context.globalAlpha = 0.5;   
        for(var i=0; i<=50; i++){   
            var R = Math.floor(Math.random() * 255);   
            var G = Math.floor(Math.random() * 255);   
            var B = Math.floor(Math.random() * 255);   
            context.fillStyle = "rgb(" + R + "," + G + "," + B + ")";   
            context.beginPath();   
            context.arc(Math.random() * canvas.width, Math.random() * canvas.height, Math.random() * 100, 0, Math.PI * 2);   
            context.fill();   
        }   
    };   
</script>   
</body>   
</html>
登入後複製
執行結果:


2016325112320763.jpg (850×500)

是不是非常的酷?終於有點藝術家的範兒了吧。


相關推薦:

使用HTML5 Canvas為圖片填滿顏色和紋理

以上是HTML5 Canvas繪製時指定顏色與透明度的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板