HTML5中Canvas的渐变色功能的例子

Canvas支持线性渐变填充,和放射性渐变填充。同时,这两种渐变形式都支持多种颜色混合。

1,线性渐变

(1)要创建线性渐变,我们需要给 createLinearGradient() 传入两个坐标点,分别表示渐变的起点和终点。起点和终点构成了颜色逐渐过渡的区间。

var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
 
//边框线条宽度
context.lineWidth = 2;
//边框线条颜色
context.strokeStyle = "#c0c0c0";
//绘制路径
context.moveTo(200, 50);
context.lineTo(100, 150);
context.lineTo(300,150);
context.closePath();
 
//创建一个从(150,0)到(250,0)的渐变
var gradient = context.createLinearGradient(150, 0, 250, 0);
//添加两种颜色
gradient.addColorStop(0, "magenta");
gradient.addColorStop(1, "yellow");
 
//填充渐变色
context.fillStyle = gradient;
context.fill();
context.stroke();

(2)设置渐变颜色,需要使用渐变对象的 addColorStop() 方法。调用这个方法,除了需要提供颜色值(颜色名),还需要提供一个0~1的偏移值。0表示位于渐变的起点,1表示位于渐变的终点。
通过多次调用 addColorStop() 方法,我们可以创建多种颜色构成的渐变。

var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
 
//边框线条宽度
context.lineWidth = 2;
//边框线条颜色
context.strokeStyle = "#c0c0c0";
//绘制路径
context.moveTo(200, 50);
context.lineTo(100, 150);
context.lineTo(300,150);
context.closePath();
 
//创建一个从(150,0)到(250,0)的渐变
var gradient = context.createLinearGradient(150, 0, 250, 0);
//添加多种颜色
gradient.addColorStop(0, "magenta");
gradient.addColorStop(0.25, "blue");
gradient.addColorStop(0.5, "green");
gradient.addColorStop(0.75, "yellow");
gradient.addColorStop(1, "red");
 
//填充渐变色
context.fillStyle = gradient;
context.fill();
context.stroke();

2,放射性渐变

(1)要创建放射性渐变,我需要使用 createRadialGradient() 指定两个圆。因为放射性渐变就是颜色从一个小圆过渡到一个更大、包含它的圆。

var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
 
//边框线条宽度
context.lineWidth = 2;
//边框线条颜色
context.strokeStyle = "#c0c0c0";
//绘制路径
context.moveTo(200, 50);
context.lineTo(100, 150);
context.lineTo(300,150);
context.closePath();
 
//渐变起点是坐标为(200,100),半径10的圆。终点是相同圆心坐标,半径50的圆
var gradient = context.createRadialGradient(200, 100, 10, 200, 100, 50);
//添加两种颜色
gradient.addColorStop(0, "magenta");
gradient.addColorStop(1, "yellow");
 
//填充渐变色
context.fillStyle = gradient;
context.fill();
context.stroke();

(2)同样通过多次调用 addColorStop() 方法,可以实现多色放射性渐变效果。

var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
 
//边框线条宽度
context.lineWidth = 2;
//边框线条颜色
context.strokeStyle = "#c0c0c0";
//绘制路径
context.moveTo(200, 50);
context.lineTo(100, 150);
context.lineTo(300,150);
context.closePath();
 
//渐变起点是坐标为(200,100),半径10的圆。终点是相同圆心坐标,半径50的圆
var gradient = context.createRadialGradient(200, 100, 10, 200, 100, 50);
//添加多种颜色
gradient.addColorStop(0, "magenta");
gradient.addColorStop(0.25, "blue");
gradient.addColorStop(0.5, "green");
gradient.addColorStop(0.75, "yellow");
gradient.addColorStop(1, "red");
 
//填充渐变色
context.fillStyle = gradient;
context.fill();
context.stroke();

 fillStyle和 strokeStyle 属性可以设置为 CanvasGradient 对象

CanvasGradient对象的创建有两个方法:createLinearGradient和createRadialGradient

grd=context.createLinearGradient(startX,startY,endX,endY);

grd.addColorStop(offset,color);

 

grd=context.createRadialGradient(startX,startY,endX,endY);

grd.addColorStop(offset,color);

 addColorStop()方法添加颜色中间值

 例子:

<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>canvas createLinearGradient</title>
<script>
window.onload=function(){  
 var canvas=document.getElementByIdx_x("mycanvas");
 var context=canvas.getContext("2d");
 
 context.beginPath();
 context.moveTo(170,80);
 context.bezierCurveTo(130,100,130,150,230,150);
 context.bezierCurveTo(250,180,320,180,340,150);
 context.bezierCurveTo(420,150,420,120,390,100);
 context.bezierCurveTo(430,40,370,20,340,50);
 context.bezierCurveTo(320,5,250,20,250,50);
 context.bezierCurveTo(200,5,150,20,170,80);
 context.closePath();
 var grd = context.createLinearGradient(230,0,370,200);
 grd.addColorStop(0,"#8ed6ff");
 grd.addColorStop(1,"#004cb3");
 context.fillStyle=grd;
 context.fill();
 
 context.lineWidth=5;
 context.strokeStyle="#0000ff";
 context.stroke();
  
}
</script>
</head>
<body>
<canvas id="mycanvas" width="600" height="400"></canvas>
</body>
</html>

时间: 2024-10-03 15:17:32

HTML5中Canvas的渐变色功能的例子的相关文章

html5中canvas的一个简单的例子

买了两本关于HTML5的书,一本<HTML5揭秘>,一本<HTML5高级程序设计>,现在在看<html5揭秘>网上说这本书是非常入门的一本,<HTML5权威指南>就相对深一点.所以买了揭秘,没买指南.都说HTML5的canvas很重要,所以这里把书上关于canvas的一些简单例子,给试着自己写了一遍,放上来把  代码如下 复制代码 window.onload = function(){     var canvas = document.getElement

HTML5中Canvas(绘制)使用例子

Canvas中不仅可以画线(路径),还能画很多其他的图像,这一章就介绍Canvas的其他两种绘图API. 一.简单图形,整套的属性和方法专门用于绘制矩形: 1.fillStyle可以设置为CSS颜色.一个图案或一种颜色渐变.fillStyle默认是纯黑色,你可以设置成你喜欢的任意颜色.只要页面打开着,每个绘图上下文都会记录自己的属性,除非你重置过它. 2.fillRect(x,y,width,height)绘制一个矩形,并以当前的fillStyle来填充. 3.srtokeStyle和fillS

关于HTML5中Canvas的宽、高设置有关问题

关于HTML5中Canvas的宽.高设置问题 Canvas元素默认宽 300px, 高 150px, 设置其宽高可以使用如下方法:方法一:1 <canvas width="500" height="500"></canvas>方法二:使用HTML5 Canvas API操作 OK1 var canvas = document.getElementById('欲操作canvas的id');2 canvas.width = 500;3 canva

html5中canvas的使用 获取鼠标点击页面上某点的RGB

1.html5中的canvas在IE9中可以跑起来.在IE8则跑不起来,这时候就需要一些东西了. 我推荐这种方法,这样显得代码不乱. <!--[if lt IE9]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> 需要谷歌的一个html5.js的文件即可. 注意:必须插入在<head></he

HTML5中Canvas的使用例子

通常使用<canvas>绘图时,后绘制的图形会覆盖在先绘制的图形上方,即遮住先绘制的图形.这是由于默认的合成操作时source-over.除了这种合成方式,还有其他许多合成方式告诉<canvas>怎么显示两个重叠的图形. 1,所有的合成操作及其效果 11种合成方式如下:source-over.source-in.soruce-out.source-atop.destination-over.destination-in.destination-out.destination-ato

html5中canvas 圆周运动和椭圆运动例子

一. 圆周运动 1.1 思路分析: 圆的方程为: // (x0, y0)为圆心位置:(x, y)为圆上的点 (x - x0) ^ 2 + (y - y0) ^ 2 = r ^ 2 cos(angle) ^ 2 + sin(angle) ^ 2 = 1 因此,综合以上两式,可得: x = r * cos(angle) + x0 y = r * sin(angle) + y0 因此,应用正弦函数计算y坐标,用余弦函数计算x坐标. 1.2 实例: // cancelRequestAnimFrame的兼

HTML5中Canvas标签的学习

HTML5 提供了画布(canvas)标签,通过与Javascript结合使用,可以在网页上绘制图像.Canvas是一个矩形区域,使用Javascript可以控制其每一个像素.本文将对canvas标签进行简要的学习. 1.canvas标签说明 canvas标签是一个矩形区域,它包含两个属性width和height,分别表示矩形区域的宽和高,这两个属性都是可选的,并且都可以通过css来设定,他们的默认值是300px和150px.canvas在网页中的形式如下: <canvas id="myC

HTML5是Canvas绘制圆形或弧线例子

绘制矩形(正方形): var bg = document.getElementById('caibaojian'); var ctx = bg.getContext('2d'); ctx.beginPath(); //实心 //ctx.fillStyle="#0000ff"; //填充的颜色 //ctx.fillRect(20,20,100,100); //矩形起点为(20,20),长为100,宽为100 //空心 ctx.lineWidth = 10;//边框为10px ctx.st

HTML5中Canvas的使用样例(图形增加鼠标点击、拖动交互)

Canvas是一种非保留性的绘图界面,即不会记录过去执行的绘图操作,而是保持最终结果(构成图像的彩色像素). 如果想让Canvas变得具有交互性,比如用户可以选择.拖动画布上的图形.那么我们必须记录绘制的每一个对象,才能在将来灵活的修改并重绘它们,实现交互. 1,鼠标点击选择图形对象 (1)下面样例中点击"添加圆圈"按钮可以在画布上增加位置.大小.颜色都是随机的圆圈. (2)点击"清空画布"按钮可以清除画布上所有圆圈. (3)鼠标点击任意圆圈,该圆圈会出现黑色边框,