HTML5中Canvas绘制曲线:圆、圆弧、贝塞尔曲线使用样例

绘制曲线有如下四个方法:arc()、artTo()、bezierCurveTo()和quadraticCurveTo()。
第一个比较简单,就是绘制一段圆弧。后面三个方法复杂一些,都需要定义控制点。

1,arc()绘制圆弧

圆弧就是圆上的一部分。要绘制圆弧必须确定:圆形的坐标、圆的半径、圆弧的起点角度和终点角度。
其中起点角度和终点角度都要用弧度表示,即常量pi的倍数(1pi是半圆,2pi是整个圆形)。

(1)下面使用arc()方法绘制一段圆弧:

var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
 
context.lineWidth = 10;
context.strokeStyle = "#cd2828";
 
//创建变量,保存圆弧的各方面信息
var centerX = 200;
var centerY = 100;
var radius = 80;
var startingAngle = 0 * Math.PI;
var endingAngle = 1.5 * Math.PI;
 
//使用确定的信息绘制圆弧
context.arc(centerX, centerY, radius, startingAngle, endingAngle);
context.stroke();

(2)如果在调用stroke()之前调用closePath(),就会在圆弧的起点和终点之间绘制一条直线,得到一个封闭的小半圆。

var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
 
context.lineWidth = 10;
context.strokeStyle = "#cd2828";
 
//创建变量,保存圆弧的各方面信息
var centerX = 200;
var centerY = 100;
var radius = 80;
var startingAngle = 0 * Math.PI;
var endingAngle = 1.5 * Math.PI;
 
//使用确定的信息绘制圆弧
context.arc(centerX, centerY, radius, startingAngle, endingAngle);
context.closePath();
context.stroke();

(3)如果想画一个整圆,将起点角度设为0,终点角度设为2pi即可。

var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
 
context.lineWidth = 10;
context.strokeStyle = "#cd2828";
 
//创建变量,保存圆弧的各方面信息
var centerX = 200;
var centerY = 100;
var radius = 80;
var startingAngle = 0 * Math.PI;
var endingAngle = 2 * Math.PI;
 
//使用确定的信息绘制圆弧
context.arc(centerX, centerY, radius, startingAngle, endingAngle);
context.stroke();

2,bezierCurveTo()绘制贝塞尔曲线

贝塞尔曲线之所以流行 ,是因为这种曲线能够保证平滑,哪怕再小、再大的弧度都可以。
一个贝塞尔曲线有两个控制点。曲线的起点切线连接第一个控制点,终点切线连接第二个控制点。两条连接线之间就是曲线。
曲线的弯曲程度(曲率)由控制点与起点和终点的距离决定。距离越远,弯曲度越大(有点像引力,只不过越远力越大)。

(1)下面绘制一条贝塞尔曲线(第一个控制点在起点上放,第二个控制点在终点下方)

var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
 
context.lineWidth = 10;
context.strokeStyle = "#cd2828";
 
//把笔移动到起点位置
context.moveTo(20, 150);
 
//创建变量,保存两个控制点以及曲线终点信息
var control1_x = 187;
var control1_y = 0;
var control2_x = 429;
var control2_y = 380;
var endPointX = 365;
var endPointY = 50;
 
//绘制曲线
context.bezierCurveTo(control1_x, control1_y, control2_x, control2_y, endPointX, endPointY);
context.stroke();

(2)在线生成贝塞尔曲线
地址:http://blogs.sitepointstatic.com/examples/tech/canvas-curves/bezier-curve.html
我们可以拖动控制点、起点和终点任意改变贝塞尔曲线的形状。同时右侧会实时地生成相应的HTML5绘图代码,真正所见即所得。

时间: 2024-12-24 20:46:29

HTML5中Canvas绘制曲线:圆、圆弧、贝塞尔曲线使用样例的相关文章

解决html5中canvas绘制圆环进度条出现模糊效果方案

问题 近期用canvas绘制了圆环进度条,但是进度条出现周围模糊的现象,针对这种现象,网上搜了搜,有人提问,但是貌似没有很好的解决方案,针对这种情况,提出几种解决方案,仅供参考! 模糊效果如下: 解决方案 针对这种情况,我提出几种解决思路. 一.运用hidpi-canvas-polyfill 的js进行解决 HiDPI Canvas Polyfill 是针对设备提出的canvas高清解决方案,首先引入hidpi-canvas.js. 这个js会自动识别你的canvas,会把你的canvas变小,

HTML5的canvas绘制矩形

问题描述 HTML5的canvas绘制矩形 为什么可是打开浏览器后变成了这样: 解决方案 原文:http://www.lifelaf.com/blog/?p=363 本文翻译自Steve Fulton & Jeff Fulton HTML5 Canvas Chapter 2 "The Basic Rectangle Shape".让我们来看一下Canvas内置的简单几何图形 - 矩形的绘制.在Canvas中,绘制矩形有三种方法:填充(fillRect)......答案就在这里:

qt画点的问题?-在QT中怎么绘制cos()这个函数的曲线

问题描述 在QT中怎么绘制cos()这个函数的曲线 我要画一个曲线出来.在QT文档里面找了void QPainter::drawLine ( const QLine & line )这个函数,但是不可以,它是一确定的点来画点的.请大神们指教一下. 解决方案 http://blog.chinaunix.net/uid-24219701-id-3157288.html 解决方案二: 至于是什么函数,只要你根据x算出y就可以 解决方案三: 绘制余弦函数曲线Qt绘制贝塞尔曲线Qt- 绘制实时曲线

源代码-在WPF中Canvas 绘制图形的平移、缩放

问题描述 在WPF中Canvas 绘制图形的平移.缩放 我在WPF中(C#)Canvas中画了N多条线段.圆.文字.现在我想用鼠标滚轮以鼠标指针为缩放点同时缩放Canvas中的所有图形,鼠标左键按下能同时平移所有图形.该怎么做,我写出来的缩放是以左上角为原点的,平移时会跳动. 当Canvas大小改变时整个Canvas里的图形会等比例的放大缩小. 1.缩放时Canvas大小不得改变,只是缩放图形 2.能同时支持鼠标和平板触屏操作平移缩放. 3.给源代码最好.** 谢谢各位老师 解决方案 1:了解W

ios开发之在UIView上使用自定义曲线绘制复杂图形(贝塞尔曲线)

有时我们需要绘制一个不规则路径的图形,里面可能包含直线或者曲线,这时就可以使用 UIBezierPath 来实现.   UIBezierPath类可以表示任何能够用Bezier曲线定义的形状,我们可以创建自己的自定义曲线.完成操作后,可以像其他路径一样,使用所得到的UIBezierPath对象进行填充和描边.   1,下面演示使用UIBezierPath绘制一个不规则图形: (1)画笔移动到矩形区域左上角 (2)从笔的当前位置向右上角的点画一条直线 (3)从笔的当前位置向左下角的点画一条直线 (

js+html5实现canvas绘制网页时钟的方法_javascript技巧

本文实例讲述了js+html5实现canvas绘制网页时钟的方法,画的是一个可用于网页的.带摆的钟表,可以通过按钮调整其大小和位置,具体实现内容如下 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Clock</title> <script type="tex

js+html5实现canvas绘制镂空字体文本的方法

  本文实例讲述了js+html5实现canvas绘制镂空字体文本的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <!DOCTYPE html> <html> <body> <canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3

js+html5实现canvas绘制简单矩形的方法

  本文实例讲述了js+html5实现canvas绘制简单矩形的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <!DOCTYPE html> <html> <body> <canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c

js+html5实现canvas绘制圆形图案的方法

  本文实例讲述了js+html5实现canvas绘制圆形图案的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <!DOCTYPE html> <html> <body> <canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d