JavaScript+canvas 利用贝塞尔曲线绘制曲线
效果图:
<body>
<canvas id="test" width="800" height="300"></canvas>
<script type="text/javascript">
//一个工具函数,用于将角度从角度制转化成弧度制
function rads(x){ return Math.PI*x/180;} var canvas = document.getElementById('test');
var c = canvas.getContext("2d"); //绘制一个图形,如果需要椭圆的话则进行相应的缩放和旋转即可
//由于没有当前点,因此绘制的图形不需要当前点到圆形起点之间的直线
c.beginPath();
c.arc(75,100,50, //圆心位于(75,100),半径为50
0,rads(360),false); //从0度到360顺时针旋转 //绘制一个楔,角度从x轴正向顺时针度量
//要注意的是arc()方法会将当前点和弧形起点用直线相连
c.moveTo(200,100); //从圆心开始
c.arc(200,100,50, //圆心和半径
rads(-60),rads(0), //从-60度到0度
false); //顺时针
c.closePath(); //将半径添加到圆心 //同样的楔,但方向不同
c.moveTo(325,100);
c.arc(325,100,50,
rads(-60),rads(0), //从-60度到0度
true); //逆时针
c.closePath(); //使用acrTo()方法来绘制圆角,绘制一个一点(400,50)位左上角同时还带有不同半径角的正方形
c.moveTo(450,50); //从上边的中点开始
c.arcTo(500,50,500,150,30); //添加部分上边和右上角
c.arcTo(500,150,400,150,20); //添加右上角和右下角
c.arcTo(400,150,400,50,10); //添加底边和坐下角
c.arcTo(400,50,500,50,0); //添加走遍左上角
c.closePath(); //二次贝塞尔曲线,一个控制点
c.moveTo(75,250); //从点(75,200)开始
c.quadraticCurveTo(100,200,175,250); //画一条以一直到到点(175,250)结束的曲线
c.fillRect(100-3,200-3,6,6); //标记控制点(100,200) //三次贝塞尔曲线
c.moveTo(200,250); //从点(200,250)开始
c.bezierCurveTo(220,220,280,280,300,250); //画一条以一直到点(300,250)结束的曲线
c.fillRect(200-3,220-3,6,6); //标记控制点
c.fillRect(280-3,280-3,6,6); //定义一些图形属性并绘制曲线
c.fillStyle="#aaa";
c.lineWidth = 5;
c.fill();
</script>
</body>
JavaScript+canvas 利用贝塞尔曲线绘制曲线的更多相关文章
- javascript -- canvas绘制曲线
绘制曲线有几种思路: 1.通过quadraticCurveTo(controlX, controlY, endX, endY)方法来绘制二次曲线 2.通过bezierCurveTo(controlX1 ...
- 基于canvas二次贝塞尔曲线绘制鲜花
canvas中二次贝塞尔曲线参数说明: cp1x:控制点1横坐标 cp1y:控制点1纵坐标 x: 结束点1横坐标 y:结束点1纵坐标 cp2x:控制点2横坐标 cp2y:控制点2纵坐标 z:结束点2横 ...
- OpenGL 实践之贝塞尔曲线绘制
说到贝塞尔曲线,大家肯定都不陌生,网上有很多关于介绍和理解贝塞尔曲线的优秀文章和动态图. 以下两个是比较经典的动图了. 二阶贝塞尔曲线: 三阶贝塞尔曲线: 由于在工作中经常要和贝塞尔曲线打交道,所以简 ...
- canvas绘制曲线
canvas绘制曲线 方法 quadraticCurveTo(cp1x, cp1y, x, y) 只有一个控制点的贝塞尔曲线(其实就是控制点分别与起始点和结束点连线的公切线) bezierCurveT ...
- [js高手之路] html5 canvas系列教程 - arc绘制曲线图形(曲线,弧线,圆形)
绘制曲线,经常会用到路径的知识,如果你对路径有疑问,可以参考我的这篇文章[js高手之路] html5 canvas系列教程 - 开始路径beginPath与关闭路径closePath详解. arc:画 ...
- iOS 使用贝塞尔曲线绘制路径
使用贝塞尔曲线绘制路径 大多数时候,我们在开发中使用的控件的边框是矩形,或者做一点圆角,是使得矩形的角看起来更加的圆滑. 但是如果我们想要一个不规则的图形怎么办?有人说,叫UI妹子做,不仅省事,还可以 ...
- n阶贝塞尔曲线绘制(C/C#)
原文:n阶贝塞尔曲线绘制(C/C#) 贝塞尔是很经典的东西,轮子应该有很多的.求n阶贝塞尔曲线用到了 德卡斯特里奥算法(De Casteljau's Algorithm) 需要拷贝代码请直接使用本文最 ...
- C#中利用LightningChart绘制曲线图表
最近在做一个“基于C#语言的电炉温控制软件设计”的设计,我在大学并不是专业学习C#语言编程的,对C#的学习研究完全是处于兴趣,所以编程技术也不是很厉害,遇到问题多参照网络上的开源码. 这不,在做这个课 ...
- 使用D3绘制图表(2)--绘制曲线
上一篇是使用D3绘制画布,这一篇的内容是在画布上绘制曲线. 1.之前的html代码没有变化,但是我还是贴出来 <!DOCTYPE html> <html> <head&g ...
随机推荐
- MySQL中间件Atlas安装及使用
简介 Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目.它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量 ...
- JavaScript中的该如何[更好的]做动效
在用js写动画的时候,无非使用 setTimeout/setInterval 或者 requestAnimationFrame 来处理动画(在jquery的代码里也是这么干的),本文主要为了记录下两者 ...
- opencv基础到进阶(2)
本文为系列文章的第2篇,主要讲解对图像的像素的操作方法. 2.1存取像素值 为了存取矩阵元素,需要指定元素所在的行和列,程序会返回相应的元素.单通道图像返回单个数值,多通道图像,返回的则是一组向量(V ...
- window.opener的用法
window.opener 主要用来打开窗体的父窗体,可以通过这种方式设置父窗体的值或者调用js方法. 例如: 1,window.opener.test(); ---调用父窗体中的test()方法 2 ...
- java mvc框架系列总结ssh,ssm,servlet
2016年10月3日 10:36:40 一直以来都很想写属于自己的博客,一来可以分享自己的学习经验,二来可以及时总结,毕竟博客是写给所有人看的,需要更加仔细的注意每个细节,而不是仅仅让自己看懂. 学了 ...
- ActionContext、ServletContext、pageContext的区别?
ActionContext是当前的Action的上下文环境,通过ActionContext可以获取到request.session.ServletContext等与Action有关的对象的引用: Se ...
- jsp中怎么调用java类中的方法
在jsp页面中先要,引入java类 例如: <%@page import="javabean.DbConn"%><!-- 引入包中的"类" - ...
- 机器学习:保序回归(IsotonicRegression):一种可以使资源利用率最大化的算法
1.数学定义 保序回归是回归算法的一种,基本思想是:给定一个有限的实数集合,训练一个模型来最小化下列方程: 并且满足下列约束条件: 2.算法过程说明 从该序列的首元素往后观察,一旦出现乱序现象停止该轮 ...
- ionic3 环境配置 + 運行第一個項目
1.首先我們先下載個 nodejs安裝包 地址:https://nodejs.org/en/ 安裝 檢查是否安裝成功,打開命令提示符 輸入 node -v 回車 查看版本 結果: 2.安裝ionic ...
- zookeeper源码分析-版本生成
zookeeper版本生成规则: min - minor version number micro - minor minor version number qualifier - optional ...