HTML5在canvas中绘制复杂形状附效果截图

一、绘制复杂形状或路径 
在简单的矩形不能满足需求的情况下,绘图环境提供了如下方法来绘制复杂的形状或路径。 
beginPath() : 开始绘制一个新路径。 
closePath() : 通过绘制一条当前点到路径起点的线段来闭合形状。 
fill() , stroke() : 填充形状或绘制空心形状。 
moveTo() : 将当前点移动到点(x,y)。 
lineTo() : 从当前点绘制一条直线到点(x,y)。 
arc(x,y,r,sAngle,eAngle,counterclockwise) : 绘制一条指定半径的弧到点(x,y)。

二、用这些方法绘制复杂形状需遵循以下步骤 

使用beginPath()方法开始绘制路径。 
使用moveTo()、lineTo()、arc()、方法创建线段。 
使用closePath()结束绘制并闭合形状(可选)。 
使用stroke()或fill()绘制路径的外边框或填充形状。使用fill()会自动闭合所有未闭合路径。

三、弧arc()绘制说明 
 
 
四、在canvas中绘制复杂形状 
代码如下:

<!DOCTYPE
html>

<html
xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta
http-equiv="Content-type"
content="text/html; charset = utf-8">

<title>HTML5</title>

<script
type="text/javascript"
charset="utf-8">

//这个函数将在页面完全加载后调用

function pageLoaded() {

//获取canvas对象的引用,注意tCanvas名字必须和下面body里面的id相同

var canvas = document.getElementById('tCanvas');

//获取该canvas的2D绘图环境

var context = canvas.getContext('2d');

//绘制代码将出现在这里

//绘制复杂性猪

//填充三角形

context.beginPath();

context.moveTo(10, 120);//从(10,20开始)

context.lineTo(10, 180);//表示从(10,120)开始,画到(10,180)结束

context.lineTo(110, 150);//表示从(10,180)开始,画到(110,150)结束

context.fill();//闭合形状并且以填充方式绘制出来

//三角形的外边框

context.beginPath();

context.moveTo(140, 160);//从点(140,160)开始

context.lineTo(140, 220);

context.lineTo(40, 190);

context.closePath(); //关闭路径

context.stroke(); //以空心填充

//一个复杂的多边形

context.beginPath();

context.moveTo(160, 160);//从点(160,160)开始

context.lineTo(170, 220);

context.lineTo(240, 210);

context.lineTo(260, 170);

context.lineTo(190, 140);

context.closePath();

context.stroke();

//绘制弧

//绘制半圆弧

context.beginPath();

,角度从0到180°的弧线

context.arc(100, 300, 40, 0 * Math.PI, 1 * Math.PI, true); //PI的弧度是180°

context.stroke();

//画一个实心圆

context.beginPath();

,角度为0到360°的弧

context.arc(100, 300, 30, 0 * Math.PI, 2 * Math.PI, true);//2*Math.PI是360°

context.fill();

//画一个3/4弧

context.beginPath();

,角度为0到270°的弧

context.arc(200, 300, 25, 0 * Math.PI, 3 / 2 * Math.PI, false);

context.stroke();

}

</script>

</head>

<body
onload="pageLoaded();">

<canvas
width="400"
height="400"
id="tCanvas"
style="border:black
1px
solid;">

<!--如果浏览器不支持则显示如下字体-->

提示:你的浏览器不支持

标签

</canvas>

</body>

</html>

五、绘制效果 

HTML5在canvas中绘制复杂形状附效果截图的更多相关文章

  1. HTML5 在canvas中绘制复杂形状

    作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/32942667 一.绘制复杂形状或路径 在简单的矩形不能满足需求的情况下,画图环 ...

  2. 用html5的canvas画布绘制贝塞尔曲线

    查看效果:http://keleyi.com/keleyi/phtml/html5/7.htm 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...

  3. 浅谈canvas中的拖尾效果

    引言 很早就想了解以下 canvas 中的拖尾效果(如彗星,烟花等效果)是怎么实现的,但是一直没有深入了解,正巧在 codepen 上看到一个 demo,代码简单,效果炫酷,故有此文. 什么黑科技 在 ...

  4. 在 Canvas 中绘制扇形

    在 HTML5 Canvas 中,我们可以通过 arc 方法来绘制圆形: // context.arc(x, y, r, sAngle, eAngle, counterclockwise); var ...

  5. HTML5使用Canvas来绘制图形

    一.Canvas标签: 1.HTML5<canvas>元素用于图形的绘制,通过脚本(通常是javascript)来完成. 2.<canvas>标签只是图形容器,必须使用脚本来绘 ...

  6. HTML5 Canvas中绘制椭圆的几种方法

    1.canvas自带的绘制椭圆的方法 ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise)是后来 ...

  7. Canvas中绘制贝塞尔曲线

    ① 什么是贝塞尔曲线? 在数学的数值分析领域中,贝济埃曲线(英语:Bézier curve,亦作“贝塞尔”)是计算机图形学中相当重要的参数曲线.更高维度的广泛化贝济埃曲线就称作贝济埃曲面,其中贝济埃三 ...

  8. html5 js canvas中画星星的函数

    function drawStar(cxt, x, y, outerR, innerR, rot) { cxt.beginPath(); ; i < ; i++) { cxt.lineTo(Ma ...

  9. <canvas>中isPointInPath()方法在不同绘制内容中的效果

    <canvas>是HTML5中新增加的一个元素,我们可以使用脚本(通常使用JavaScript)在上面绘制图形,就像个画布一样.我们可以用它来绘制图表.制作一些动画.默认大小为300px ...

随机推荐

  1. 浅谈Service层为何要有接口

    被人随意问了一句,为何每个service层都要写一个接口呢,多麻烦~虽然想说点什么,但是又不知道从何说起,只好从新整理一下思绪. 情景1:在开源框架中有很多这种情况,就是某个功能支持用户自定义扩展.说 ...

  2. mysql常用基本操作

    mysql常用操作 查看都有哪些库 show databases; 查看某个库的表 use 库名; show tables; 查看表的字段 desc 表名; 当前是哪个用户 select user() ...

  3. Android源码阅读-Filter过滤器

    Filter 顺便看看,Android中过滤器是怎么实现的? 注释中提到,Filter一般通过继承Filterable实现 具体实现 这是SimpleAdapter出现的一个过滤首字母item的一个过 ...

  4. HTTPS----安全超文本传输协议

    HTTPS协议详解HTTPS以保密为目标研发,简单讲是HTTP的安全版.其安全基础是SSL协议,因此加密的详细内容请看SSL.全称Hypertext Transfer Protocol over Se ...

  5. Spring远程调用技术<1>-RMI

    在java中,我们有多种可以使用的远程调用技术 1.远程方法调用(remote method invocation, RMI)  适用场景:不考虑网络限制时(例如防火墙),访问/发布基于java的服务 ...

  6. python高级之函数

    python高级之函数 本节内容 函数的介绍 函数的创建 函数参数及返回值 LEGB作用域 特殊函数 函数式编程 1.函数的介绍 为什么要有函数?因为在平时写代码时,如果没有函数的话,那么将会出现很多 ...

  7. http协议进阶(三)补充:报文首部

    之前写的关于报文首部的传送门: 报文首部:http://www.cnblogs.com/imyalost/p/5708445.html 通用首部字段:http://www.cnblogs.com/im ...

  8. 文件夹右键添加“DOS”命令

    导入注册表 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Folder\shell\RunCMD] @="进入命令行&quo ...

  9. Python-06-面向对象(基础篇)

    面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机 ...

  10. JS截取字符串

    使用 substring()或者slice() 函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组例子:str=”jpg|bmp|gif|ico|png”;arr=theStr ...