纸飞机模拟一个物体在规定设计轴线偏离方位。

 //三角形
function DrawTriangle(canvas, A, B, C) {
//画个三角形,“A、B、C”是顶点
with (canvas) {
moveTo(A[0], A[1]);
lineTo(B[0], B[1]);
lineTo(C[0], C[1]);
lineTo(A[0], A[1]);
}
} // 画纸飞机
//headx,heady 纸飞机头坐标
//footx,footy 纸飞机尾巴坐标
function DrawDarts(canvas, headx, heady, footx, footy) {
var c = document.getElementById(canvas);
var cxt = c.getContext("2d"); //半径 R
var R = 150; //转换头坐标
var headx1 = R + headx;
var heady1 = R - heady;
//转换尾坐标
var footx1 = R + footx;
var footy1 = R - footy; //左尾
var footxl = R + (footx - 50);
var footyl = R - footy; //右尾
var footxr = R + (footx + 50);
var footyr = R - footy; //上尾
var footxu = R + footx;
var footyu = R - (footy - 50); //下尾
var footxd = R + footx;
var footyd = R - (footy + 50); //判断头x和尾x的大小
cxt.beginPath();
cxt.strokeStyle = "black";
cxt.fillStyle = "#6C8D9F";
var A = new Array(headx1, heady1);
var B = new Array(footx1, footy1);
// alert(headx1);
// alert(footx1);
if (parseInt(headx1) - parseInt(footx1) <= 0)
var C = new Array(footxr, footyr);
else
var C = new Array(footxl, footyl);
DrawTriangle(cxt, A, B, C); cxt.fill();
cxt.closePath();
cxt.stroke(); //画头、上、下尾巴 形成的三角形
cxt.beginPath();
cxt.strokeStyle = "black";
cxt.fillStyle = "#6C8D9F";
var A1 = new Array(headx1, heady1);
var B1 = new Array(footxu, footyu);
var C1 = new Array(footxd, footyd);
DrawTriangle(cxt, A1, B1, C1);
cxt.fill();
cxt.closePath();
cxt.stroke(); cxt.beginPath();
cxt.strokeStyle = "black";
cxt.fillStyle = "#6C8D9F";
var A2 = new Array(headx1, heady1);
var B2 = new Array(footx1, footy1);
if (parseInt(headx1) - parseInt(footx1) <= 0)
var C2 = new Array(footxl, footyl);
else
var C2 = new Array(footxr, footyr);
DrawTriangle(cxt, A2, B2, C2);
cxt.fill();
cxt.closePath();
cxt.stroke();
}

html 页面调用

<!DOCTYPE HTML>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>HTML Canvas 画纸飞机</title>
<script type="text/javascript" src="Darts.js"></script>
</head>
<body>
<canvas id="can" width="300" height="300" style="border: 1px solid #00F">浏览器不支持HTML5!</canvas>
<script type="text/javascript" charset="utf-8">
DrawDarts("can", -10, 10, 30, -30)
</script>
</body>
</html>

预览效果图

效果图2:

HTML5 Canvas 画纸飞机组件的更多相关文章

  1. HTML5 Canvas 画虚线组件

    前段时间由于项目需要,用到了HTML5 Canvas画图,但是没有画虚线的方法,自己写了一个HTML5 画虚线的组件. dashedLine.js if (window.CanvasRendering ...

  2. 基于 HTML5 Canvas 的拓扑组件开发

    在现在前端圈大行其道的 React 和 Vue 中,可复用的组件可能是他们大受欢迎的原因之一, 在 HT 的产品中也有组件的概念,不过在 HT 中组件的开发是依托于 HTML5 Canvas 的技术去 ...

  3. 基于 HTML5 Canvas 的拓扑组件 ToolTip 应用

    前言 ToolTip 效果是网页制作中常见的使用特效.当用户将鼠标悬浮在某个控件上时,ToolTip 显示并向用户展示相应的提示信息:当鼠标离开时,ToolTip 隐藏.一般情况下,我们使用 Tool ...

  4. 前端特效demo | 值得收藏的6个 HTML5 Canvas 实用案例

    HTML5 动画在Canvas 上得到了充分的发挥,我们 VIP 视频也分享过很多相关的动画特效制作视频,这次给大家带来 6 款超炫酷的HTML5 canvas 动画的 demo,一起来看看吧~ 文内 ...

  5. jTopo HTML5 Canvas 画图组件

    jTopo是什么? jTopo(Javascript Topology library)是一款完全基于HTML5 Canvas的关系.拓扑图形化界面开发工具包. jTopo关注于数据的图形展示,它是面 ...

  6. HTML5 Canvas 画图组件 All In One

    HTML5 Canvas 画图组件 All In One Canvas SVG Canvas + SVG refs https://www.infoq.cn/article/1BVg9VDSmqyHv ...

  7. HTML5 程序设计 - 使用HTML5 Canvas API

    请你跟着本篇示例代码实现每个示例,30分钟后,你会高喊:“HTML5 Canvas?!在哥面前,那都不是事儿!” 呵呵.不要被滚动条吓到,很多都是代码和图片.我没有分开写,不过上面给大家提供了目录,方 ...

  8. html5 Canvas API

    详细内容请点击 1.HTML Canvas API有两方面优势可以弥补:首先,不需要将所绘制图像中的每个图元当做对象存储,因此执行性能非常好:其次,在其他编程语言现有的优秀二维绘图API的基础上实现C ...

  9. HTML5 Canvas自定义圆角矩形与虚线(Rounded Rectangle and Dash Line)

    HTML5 Canvas自定义圆角矩形与虚线(RoundedRectangle and Dash Line) 实现向HTML Canvas 2d context绘制对象中添加自定义的函数功能演示,如何 ...

随机推荐

  1. jiffies存放

    固然书本上讲明jiffies是jiffies_64的低32位,但是我还是自己测试了下,重点在于链接脚本的写法. 此处只是为了测试,因此简化链接脚本. /* link.lds */ 1 ENTRY(_s ...

  2. redis的有序集合ZSET(stored set)

    相关命令 1.ZADD ZADD key-name score member [score member……] 将带有给定分值的成员添加到有序集合里 2.ZREM ZREM  key-name mem ...

  3. CIO需加强对战略管理层面的掌控-精华篇

    当代CIO面临提升信息化作用的新机遇.CIO在企业中,不能满足于职能性的技术支撑角色,要找到新的着力点,以发挥信息化在全局战略中的作用,把信息化力量聚焦于做强做优,提高国际竞争力上来,成为企业不可或缺 ...

  4. Sql Server 跨服务器连接

    用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset('SQLOLEDB', 'sql服 ...

  5. Java -- 异常的捕获及处理 -- Java的异常处理机制

    7.1.4 Java的异常处理机制 在整个Java的异常处理中,实际上也是按照面向对象的方式进行处理,处理的步骤如下: ⑴ : 一旦产生异常,则首先会产生一个异常类的实例化对象. ⑵ : 在try语句 ...

  6. cocos2d-x 3.0 在C++中调用lua函数(2)

    个人觉得3.0里面, 在C++下面调用lua函数很不方便, 所以就扩展了一个类, 继承自LuaStack, 代码和使用方式如下: #ifndef __CC_LUA_STACKEX_H_ #define ...

  7. Java获取项目当前请求的全部URL,Java获取Referer,Java获取完整链接地址URL

    Java获取项目当前请求的全部URL,Java获取Referer,Java获取完整链接地址URL >>>>>>>>>>>>> ...

  8. GreenPlum数据库安装

    第一章    文档概述 本文描述适用于Greenplum4.0以上版本的安装操作.所涉及到的操作系统相关参数调整,主要针对Redhat Linux操作系统. 第二章    安装介质 操作系统:Cent ...

  9. MFC之自绘控件

    在描绘MFC界面时,MFC自带的控件样式是绝对不满足界面的需求的. 所以我们就要在MFC自带控件基础上对控件样式进行重绘. 在采用自绘前界面样式 采用自绘后界面样式 是不是自绘控件后看起来正常了很多? ...

  10. iOS开发-修改UITableViewCell中image和title的位置和大小

    最近在开发中遇到需要Cell中imageView和textLable位置和大小的情况,设计希望得到的结果如下图所示: 而TableViewCell默认样式,image是靠紧左边的,并且image和ti ...