HTML5的画布:Paths

HTML5的画布路径是一系列的点与点之间的绘图指令。例如,一系列的点用线在它们之间,或者与它们之间的电弧。

路径用来绘制多种类型的形状(线,圆,多边形等)的HTML5画布上的,所以要理解这个核心概念是很重要的。

开始和关闭路径

路径开始和结束时使用的2D上下文函数调用beginPath()closePath() ,就像这样:

var canvas  = document.getElementById("ex1");
var context = canvas.getContext("2d");

context.beginPath();

//... path drawing operations

context.closePath();

moveTo()

当使用一个路径图,使用的是虚拟的“笔”或“指针”。这个虚拟指针总是位于在一些点。移动虚拟指针是通过使用2D上下文功能 MOVETO(X,Y) ,就像这样:

context.moveTo(10,10);

lineTo()

context.beginPath();

context.moveTo(10,10);
context.lineTo(50,50);

context.closePath();

stroke() + fill()

context.beginPath();
context.moveTo(10,10);
context.lineTo(60,50);
context.lineTo(110,50);
context.lineTo(10,10);
context.stroke();
context.closePath();

context.beginPath();
context.moveTo(100,10);
context.lineTo(150,50);
context.lineTo(200,50);
context.lineTo(100,10);
context.fill();
context.closePath();

Line Width

context.lineWidth = 10;

这里绘制的1,5和10的线宽三行:

Line Cape

  • butt
  • round
  • square

它可以是一个有点难以看到绘制一个线之间的差值的linecap 的价值对接广场。因此,我创建了使用线对的几个例子对接广场,拉近彼此,所以你可以看到其中的差别。顶部或左侧线正在使用的对接,和底部或行权使用

正如你可以看到,使用该行的linecap价值广场有一个额外的矩形在最后得出,这使该行时间稍长。

行加入

lineJoin的2D背景的属性定义了点如何绘制两条直线连接。当两个线连接的点被称为“线路连接”。该lineJoin属性可以具有以下值:

  • 斜切
  • 斜角

这里有三个代码示例设置线条连接:

context.lineJoin =“斜切”;
context.lineJoin =“伞”;
context.lineJoin =“圆”;

值为斜切正在绘制的线连接结果在一个三角形的角落。

值为斜面被绘制线条连接在一个平面(线性)一角的结果。

值为正在绘制的线条连接导致了圆角。

这里有三个例子显示(左起)斜角斜面 作为价值的lineJoin财产。

弧()

二维上下文功能弧()画在画布上的弧。

弧()函数有6个参数:

  • x:圆弧的中心点的x坐标。
  • ?:y坐标圆弧的中心点。
  • 半径:圆弧的半径。
  • 由startAngle:弧度从该圆弧开始角。
  • endAngle:在电弧结束于该弧度角。
  • 逆时针:套的方向是否绘制的是逆时针还是不(=不顺时针方向)。

下面是一个代码示例:

context.lineWidth = 3; 

VAR X = 50;
VAR Y = 50;
VAR半径= 25;
VAR由startAngle =(Math.PI / 180)* 45;
VAR endAngle =(Math.PI / 180)* 90;
VAR逆时针=假; 

context.beginPath();
context.arc(X,Y,半径,由startAngle,endAngle,逆时针);
context.stroke();
context.closePath();

此代码示例绘制一个圆弧的中心点,在50,50,25像素,从45度开始,并一直持续到180度的半径。打算从0到360度转换为弧度,你可能已经注意到了。

下面是代码例子看起来在画布上绘制时:

下面是相同的代码示例,但与逆时针设置为

画出一个完整的圆,简单的设定由startAngle0和 endAngle至 2
* Math.PI
其等于(Math.PI / 180)* 360

包含arcTo()

二维上下文有一个包含arcTo()函数,但它的能力可以使用模仿了lineTo()弧() ,所以我会跳过它。

到quadraticCurveTo()

到quadraticCurveTo()函数绘制二次贝塞尔曲线从一点到另一点。该曲线是由一个单一的控制点来控制。下面是一个代码示例:

context.lineWidth = 3; 

VAR fromX = 50;
VAR fromY = 50;
VAR TOX = 100;
VAR玩具= 50;
VAR CPX = 75;
VAR CPY = 100; 

context.beginPath();
context.moveTo(fromX,fromY) ;
context.quadraticCurveTo(CPX,CPY,TOX,玩具);
context.stroke();
context.closePath();

使用控制点75,100(CPX,CPY)此代码示例绘制一条曲线,从50,50至100,50。由此产生的曲线是这样的:

在画布上的小圆点是我得出了有控制点。它不是曲线的一部分正常。

bezierCurveTo()

bezierCurveTo()函数绘制三次Bezier曲线从一个点另一个。三次贝塞尔曲线有2个控制点,而二次贝塞尔曲线只有1控制点。下面是一个代码示例:

context.lineWidth = 3; 

VAR fromX = 50;
VAR fromY = 50;
VAR TOX = 300;
VAR玩具= 50;
VAR cp1X = 100;
VAR cp1Y = 100;
VAR cp2X = 250;
VAR cp2Y = 100; 

context.beginPath( );
context.moveTo(fromX,fromY);
context.bezierCurveTo(cp1X,cp1Y,cp2X,cp2Y,TOX,玩具);
context.stroke();
context.closePath();

使用控制点此代码示例绘制一条曲线,从50,50至300,50 100,100(cp1X,cp1Y)和250,100(cp2X,cp2Y)。由此产生的曲线是这样的:

在画布上的两个小点是,我已经吸引到你展示他们在哪里的控制点。它们不绘制为曲线的一部分。

下面是使用不同的开始点,结束点和控制点不同的例子:

context.lineWidth = 3; 

VAR fromX = 50;
VAR fromY = 50;
VAR TOX = 300;
VAR玩具= 50;
VAR cp1X = 100;
VAR cp1Y = 10;
VAR cp2X = 250;
VAR cp2Y = 100; 

context.beginPath( );
context.moveTo(fromX,fromY);
context.bezierCurveTo(cp1X,cp1Y,cp2X,cp2Y,TOX,玩具);
context.stroke();
context.closePath();

这里是相应的曲线:

此外,两个小点是,我已经明确地呈现的控制点。

时间: 2024-11-09 03:19:56

HTML5的画布:Paths的相关文章

入门讲解HTML5的画布功能(1)

个人认为在HTML5中画布功能其实并不实用,当然趋势是在FLASH不没落的情况下.通过学习我发现画布功能能够实现的东西非常有情调,但是前端人员也要有一定的审美和构思才能做出有意思的东西,因为canvas能提供的东西实在太少了. 当然在苹果抵制Flash的前提下,Flash的前景并不光明,这也给了我们前端人员更多的负担和机会.因为在这一块UI是没有我们对于HTML5来的熟悉的.下面就是我对HTML5学习过后的一个总结. first part 首先,虽然口口声声是HTML5的内容,但是由于canva

在HTML5的画布元素上进行绘画操作

#!usr/bin/env python #-*- coding:utf-8 -*- #在HTML5的画布元素上进行绘画操作 import unittest,time from selenium import webdriver class TestDemo(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() def test_HTML5Canvas(self): url = 'http://www.w3sc

HTML5 Canvas 画布

一.Canvas是什么? canvas,是一个画布,canvas元素用于在网页上绘制图形. canvas 拥有多种绘制路径.矩形.圆形.字符以及添加图像的方法. 二.创建Canvas元素 加上基本的属性:类,宽度和高度 <canvas class="MyCanvas" width:100px height:100px></canvas> 三.绘制路径 使用的是javascript元素来绘制,canvas本省不具备绘图的能力.所有的绘制必须通过javascript

跟KingDZ学HTML5之三 画布Canvas

继续更新我们的教程,哈哈,个人觉得 ,这个HTML5 的官方 LOGO  怎么看,怎么像变形金刚. 神马关系~~~~~~~~~~~ <Canvas> 是HTML5中新出现的一个元素.就是可以通过  JS绘制图形. 目前浏览器对 Canvas 的支持情况如下 IE FF Chrome Safari Opera IPhone Android 版本7.0以上 版本3.0以上 版本3.0以上 版本3.0以上 版本10.0以上 版本1.0以上 版本1.0以上 IE7 和  IE8  需要一个 第三方的

HTML5的画布:Stroke(笔触)和Fill(填充)

每当一个HTML5画布上绘制形状,有两个属性,你需要设置: 1.Stroke 2.Fill 笔触和填充决定的形状如何绘制.Stroke(笔触)是一个形状的轮廓.Fill(填充)是在形状内部的内容. 下面这图是绘制了一个蓝色外轮廓和绿色填充的矩形(实际上是两个矩形): 下面试实现的代码: <span style="font-size:14px;">// 1. wait for the page to be fully loaded. window.onload = funct

入门讲解HTML5的画布功能(2)

前面我们提到了JS代码中绘制的红色长方形,那么我们现在用这些代码再来看看具体是表示什么意思.代码如下 <script type="text/javascript"> var Canvas=document.getElementById("myCanvas"); varContext=c.getContext("2d"); Context.fillStyle="#FF0000"; Context.fillRect(0

HTML5 canvas画布元素 制作 动态花朵动画

废话不多说 先上代码 <!doctype> <html> <head> <meta charset="utf-8"> </head> <body style="text-align:center;"> <canvas id="canvas" width="1300px" height="580px" style="bor

html5 canvas画布上合成

source-over 默认.在目标图像上显示源图像. source-atop 在目标图像顶部显示源图像.源图像位于目标图像之外的部分是不可见的. source-in 在目标图像中显示源图像.只有目标图像内的源图像部分会显示,目标图像是透明的. source-out 在目标图像之外显示源图像.只会显示目标图像之外源图像部分,目标图像是透明的. destination-over 在源图像上方显示目标图像. destination-atop 在源图像顶部显示目标图像.源图像之外的目标图像部分不会被显

利用html5的画布实现图片的自由裁剪

先看效果 操作方法: 1.图片地址,粘入input框中. 2.点击抓取,此后便可在图片中用鼠标划出目标区域. 3.点击裁剪便可裁剪出目标区域. 4.点击保存,即可将裁剪的图片上传到服务器. 附件下载:http://pan.baidu.com/s/1gdmxHnl ps:附件中的代码,只供参考.