`

canvas画矩形(包括渐变)

 
阅读更多

index.html内容:

<!DOCTYPE HTML>
<html>
<style type="text/css">
#myCanvas {border: 1px solid #BEBEBE;}
</style>
<body>
    <canvas id="myCanvas" width="800" height="600">你的浏览器不支持 HTML5</canvas>
    <script src="index.js"></script>
</body>

</html>

 

index.js内容:

(function(){ // 闭包,防止变量、方法重复
	var canvasDom = document.getElementById("myCanvas");
	var context = canvasDom.getContext("2d"); // 获取绘制功能的对象(context:上下文)
	
	drawRectangle(10, 10, 300, 200, 10, ['red', 'blue']);
	/**
	 * [drawRectangle 画一个空心的矩形]
	 * @param  {[int]} x      [起点x坐标]
	 * @param  {[int]} y      [起点y坐标]
	 * @param  {[int]} width  [宽度]
	 * @param  {[int]} height [高度]
	 * @param  {[int]} lineWidth  [线宽]
	 * @param  {[string]} color  [边框颜色,如果是数组,则渐变]
	 * @param  {[int]} direction [渐变方向:0-左右;1-上下;2-左上到右下;3-左下到右上]
	 * @return {[undefined]}        [无]
	 */
	function drawRectangle(x, y, width, height, lineWidth, color, direction) {
		context.beginPath(); // 开始路径,如果没有这个和结束路径包围,所有线条都是最后那根线条的样式了
		
		context.strokeStyle = getFillColor(x, y, width, height, color, direction);
		context.lineWidth = lineWidth;
		context.strokeRect(x, y, width, height);
		
		context.closePath(); // 结束路径,应与开始路径呼应(会不会导致内存泄露跟实现有关系)
		context.stroke();
	}
	
	fillRectangle(10, 220, 300, 200, ['blue', 'green'], 3);
	/**
	 * [fillRectangle 画一个实心的矩形]
	 * @param  {[int]} x      [起点x坐标]
	 * @param  {[int]} y      [起点y坐标]
	 * @param  {[int]} width  [宽度]
	 * @param  {[int]} height [高度]
	 * @param  {[string|array]} color  [填充颜色,如果是数组,则渐变]
	 * @param  {[int]} direction [渐变方向:0-左右;1-上下;2-左上到右下;3-左下到右上]
	 * @return {[undefined]}        [无]
	 */
	function fillRectangle(x, y, width, height, color, direction) {
		context.beginPath(); // 开始路径,如果没有这个和结束路径包围,所有线条都是最后那根线条的样式了
		
		
		context.fillStyle = getFillColor(x, y, width, height, color, direction);
		context.fillRect(x, y, width, height);
		
		context.closePath(); // 结束路径,应与开始路径呼应(会不会导致内存泄露跟实现有关系)
		context.stroke();
	}
	
	function getFillColor(x, y, width, height, color, direction) {
		var fillColor = color;
		if (typeof color == 'object') {
			var x1 = x, y1 = 0;
			var x2 = x+width, y2 = 0;
			if (direction == 1) {
				x1 = 0; y1 = y;
				x2 = 0; y2 = y+height;
			} else if (direction == 2) {
				x1 = x; y1 = y;
				x2 = x+width; y2 = y + height;
			} else if (direction == 3) {
				x1 = x; y1 = y+height;
				x2 = x+width; y2 = y;
			}
			fillColor = context.createLinearGradient(x1, y1, x2, y2);
			for (var i=0; i<color.length; i++) {
				fillColor.addColorStop(i/color.length, color[i]);
			}
		}
		return fillColor;
	}
	
})();

 

分享到:
评论

相关推荐

    QML--Canvas画布实现矩形圆形等圈定

    它提供了JavaScript API,允许开发者直接在2D画布上绘制图形,包括但不限于矩形、圆形以及其他几何形状。QML(Qt Meta Language)是Qt框架的一部分,主要用于创建富交互式用户界面,而qt5是Qt框架的第五个主要版本,...

    HTML5 Canvas画印章

    这些函数包括绘制线条、形状、图像以及应用渐变和阴影等。要创建印章,我们需要了解以下几个关键知识点: 1. **Canvas元素**:首先,在HTML文档中添加一个`&lt;canvas&gt;`元素,指定其id以便在JavaScript中引用。例如: ...

    android坐标画矩形

    1. **Android Canvas**: Android的Canvas类是用于在Bitmap上绘制图形的基础,包括线条、矩形、圆形等。你需要理解Canvas的基本方法,如`drawRect()`,`drawCircle()`等,它们接受不同的参数来定义形状的位置和样式。...

    Delphi Canvas.Brush为窗体绘制渐变背景.rar

    Delphi 为窗体绘制渐变背景,这里使用了Delphi中的Canvas.Brush.Color来实现窗口... //每次画矩形的画刷颜色  Dct:=Rect(i,0,i 1,self.Height);  //每次刷绘的矩形区域  Canvas.FillRect(Dct);  //填充颜色  end;

    JavaScript canvas绘制渐变颜色的矩形

    总结来说,JavaScript的Canvas API允许开发者以编程方式在网页上绘制图形,包括使用渐变颜色填充的矩形。通过理解`createLinearGradient`、`addColorStop`和`fillRect`等方法,我们可以创建出各种视觉效果丰富的图形...

    可定义笔刷和画布的HTML5 Canvas画板画图工具

    2. **Canvas API**:Canvas API提供了一系列的绘图方法,如`fillRect()`(填充矩形)、`beginPath()`(开始一个新的路径)、`stroke()`(描边路径)等,以及用于颜色和渐变的管理方法,例如`fillStyle`和`...

    canvas中绘制矩形、圆、渐变效果

    这是html5中canvas的一个综合的例子,同时还有canvas的鼠标单击事件的监听代码

    canvas画板

    CSS3允许开发者添加动态效果,如阴影、渐变、动画等,提升画板的视觉体验。Bootstrap则提供了响应式布局和预设的UI组件,使得画板在不同设备上都能保持良好的显示效果。 在实际应用中,这样的画板可以用于教学、...

    HTML5 Canvas 画布开发 傻瓜书 (英文版)

    Canvas支持设置填充色、描边色,还可以创建线性渐变和径向渐变,为图形添加丰富的视觉效果。例如,`createLinearGradient()`和`createRadialGradient()`函数可以帮助我们创建自定义的渐变。 在图形绘制部分,书会...

    canvas动画demo

    `canvas`是Web开发中的一个强大工具,它允许开发者动态绘制图形,包括动画效果,为网页添加丰富的视觉体验。 一、canvas基础 HTML5的`canvas`元素是一个矩形区域,可以用于在网页上绘制2D图形。通过JavaScript,...

    android canvas画人

    "android canvas画人"这个主题,意味着我们将探讨如何利用Canvas在Android应用中绘制一个人物图像。下面将详细介绍Canvas的使用以及如何自定义绘制人物。 Canvas是Android的图形系统的一部分,允许开发者在内存中的...

    canvas画板.rar

    更高级的功能包括渐变、阴影、图案、变换、混合模式等。例如,创建线性渐变: ```javascript var gradient = ctx.createLinearGradient(0, 0, canvas.width, 0); gradient.addColorStop(0, 'red'); gradient....

    js+canvas绘制矩形的方法

    本文将详细讲解如何使用JS+Canvas来绘制矩形,并通过实例代码来展示具体的操作步骤。 首先,我们需要一个HTML文件,其中包含`&lt;canvas&gt;`元素。这个元素是画布,我们将在此基础上进行绘制。下面是一个简单的HTML结构...

    HTML5 canvas画圆角框

    这篇博客"HTML5 canvas画圆角框"主要探讨了如何使用canvas API来绘制具有圆角的矩形框。 在HTML5中,`&lt;canvas&gt;`元素是一个画布,通过JavaScript的`CanvasRenderingContext2D`对象,我们可以在这个画布上进行绘图...

    计算机软件-商业源码-实例二--渐变色和动画矩形效果.zip

    这个“计算机软件-商业源码-实例二--渐变色和动画矩形效果.zip”文件提供了一个示例,展示了如何在程序中实现动态的渐变色和矩形动画效果。下面我们将详细探讨这些技术及其背后的原理。 首先,让我们来理解“渐变色...

    电脑端的canvas 画板

    2. **绘图API**:Canvas API提供了多种绘图方法,如`fillRect()`用于填充矩形,`strokeRect()`画出矩形边框,`beginPath()`和`endPath()`用于开始和结束路径,`moveTo()`和`lineTo()`绘制线条,`arc()`绘制圆弧,`...

    Canvas画布制作像素大战PixelWars

    3. **像素操作**:Canvas提供`getImageData()`方法可以获取图像数据,返回一个`ImageData`对象,包含每个像素的颜色信息。`putImageData()`则可以将修改后的`ImageData`放回Canvas。在像素大战中,可能通过这种方式...

    HTML5 canvas星空屏保动画代码.zip

    这个API包括了各种绘制路径、矩形、圆形、文本、图像的方法,以及颜色、渐变和阴影的控制等。在星空屏保动画中,可能用到的API有`fillStyle`来设置星星的颜色,`arc`来绘制圆点代表星星,`beginPath`和`closePath`...

Global site tag (gtag.js) - Google Analytics