HTML5的剪纸效果-圆形

开始之前我们要会“非零环绕规则”的原理,其实也简单,可以百度,我这里简单介绍下,

非零环绕数规则(Nonzero Winding Number Rule):若环绕数为0表示在多边形内,非零表示在多边形外
    首先使多边形的边变为矢量。将环绕数初始化为零。再从任意位置p作一条射线。当从p点沿射线方向移动时,对在每个方向上穿过射线的边计数,每当多边形的边从右到左穿过射线时,环绕数加1,从左到右时,环绕数减1。处理完多边形的所有相关边之后,若环绕数为非零,则p为内部点,否则,p是外部点。

如图所示,我们要判断点P是否在多边形内,如何判断?原理如下:

判断点p是否在多边形内,从点p向外做一条射线(可以任意方向),多边形的边从左到右经过射线时环数减1,多边形的边从右往左经过射线时环数加1,最后环数不为0,即表示在多边形内部,为0表示在多边形外。

也就是我们在画图的时候,不管是多边还是圆形,不都有一个顺序,不是顺时针就是逆时针,就这就是“非零环绕规则“的原理了。

那么在html中剪纸的依据是什么呢?

剪纸说白了就是html5的填充效果,有的地方填有的地方不填而已。在html5中用的是fill()这个方法,在调用的时候,如果计算的值是0那么不在区域内不填充,不为0在区域内填充。

说了原理,那么我们可以看看效果,比如我们画个圆的时候,用了html5的arc的时候,只对圆进行描边stroke,那么效果如图,

就是一个图,没什么大不了,那么我们开始进行填充了,使用fill()了哦,注意哦,这个时候我们选一个点P,如图:

看射线和相交点哦,如图:

看到了吧,那么我们就要开始算了,工具”非零环绕规则“,这个应该会很奇怪我们怎么没有标明方向呀。是的,应该标明方向,

我们看下标明方向哦,

context.arc(x,y,r,sAngle,eAngle,counterclockwise);counterclockwise表示的就是方向哦,怎么用不解释了,当为fasle的时候,我们知道表示顺时,那么计算结果为1,为true的时候表示逆时,计算结果也是1。好吧,不为0浏览器只好把你填充了兄弟,于是就是这样了:

代码如下:很简单吧,这里是不是对fill()这个html5方法有了进一步的了解了,是的话,那就值了。

<!DOCTYPE html>
<html>
<body>

<canvas id="myCanvas" width="300" height="150" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.
</canvas>

<script>

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.arc(100,75,50,0,2*Math.PI);
ctx.fillStyle=‘rgba(100, 145, 250, 0.3)‘;
ctx.fill();
ctx.stroke();

</script>

</body>
</html>

剪纸的效果,原理都一样,接下来也不怎么介绍了。自己动手丰衣足食吧,画两个圆,里面一个外面一个,那么对于这个效果就熟悉了,我就不介绍了。

				
时间: 2024-10-25 11:40:33

HTML5的剪纸效果-圆形的相关文章

用Canvas制作剪纸效果

在做剪纸效果之前,先介绍剪纸效果运用到的一些知识: 1.阴影: 在Canvas之中进行绘制时,可以通过修改绘图环境中的如下4个属性值来指定阴影效果: shadowColor:CSS格式的颜色字串.默认值为rgba(0,0,0,0),即完全透明的黑色. shadowOffsetX:阴影在X轴方向的偏移量,以像素为单位.默认值为0 shadowOffsetY:阴影在Y轴方向的偏移量,以像素为单位.默认值为0 shadowBlur:表示阴影效果如何延伸的double值.默认值为0.该值用于高斯模糊方程

HTML5翻书效果(双面效果)

上次对用HTML5实现翻书效果进行了试验,比较简单,这次做个升级版的吧 上次的问题: 1)翻书后原先的页面会成一个镜像 2)无法实现双面翻书. 3)翻页时明显感觉似乎有被遮挡的迹象. 这次的升级版本实现过程比较坎坷,主要因为工作比较忙,正好还要学车,每天回家都要陪孩子,只能在孩子睡着后去弄. 本版本主要解决了这些问题: 1)实现了双面的翻页效果 2)解决了翻页被遮挡的问题,我理解是因为三维空间,采用绝对定位,zIndex不够大导致被上层div遮挡. 源码请下载:http://download.c

HTML5之Canvas画圆形

1.设计源码 <!DOCTYPE html> <head> <meta charset="utf-8" /> <title>HTML5之Canvas画圆形</title> </head> <body onLoad="drawFour('canvas')"> <canvas id="canvas" width="1200" height=&

HTML5 Canvas动画效果实现原理

在线演示 使用HTML5画布可以帮助我们高速实现简单的动画效果.基本原理例如以下: 每隔一定时间绘制图形而且清除图形,用来模拟出一个动画过程,能够使用context.clearRect(0, 0, x, y)方法来刷新须要绘制的图形 首先是绘制图形的方法,例如以下: function myAnimation() { ctx.clearRect(0, 0, canvas_size_x, canvas_size_y); if (x_icon < 0 || x_icon > canvas_size_

HTML5翻页效果文字特效怎么实现呢

HTML5翻页效果文字特效怎么实现呢,之前在网上看到一款比较有新意的HTML5文字特效,文字效果是当鼠标滑过是出现翻开折叠的效果,类似书本翻页.于是我兴致勃勃的点开源码看了一下,发现其实实现也挺简单的,主要利用了CSS3的transform属性,分别对X轴.Y轴.Z轴进行翻转,先看一下效果截图. 看效果图这些文字是不是很有立体的感觉,而这个立体的感觉并不是有投影和阴影来实现的,而是通过翻转. 接下来我们来看一下源码.首先是HTML代码,非常简单,列出我们需要渲染的文字: <div class=&qu

HTML5 重力感应效果,实现摇一摇效果

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> <meta name="format-detect

Metro风兼搭HTML5瀑布流布局效果

<!doctype html> <html> <head> <meta charset="UTF-8" /> <title>Metro风兼搭HTML5瀑布流布局效果丨</title> <style> body{background:#000;} .myMetro{position:relative;overflow:hidden;zoom:1;margin:0 auto;} .MBox{float:le

HTML5 canvas流体力学效果

某人用Java搞了一个流体力学的演示:http://grantkot.com/MPM/Liquid.html. 下面是 HTML 5版的流体力学演示(推荐使用Chrome浏览器浏览): 效果演示 <canvas width="400" height="400" id="liquid"></canvas><script> /** * This version: * Copyright Stephen Sincla

14个HTML5实现的效果合集

HTML5可不是什么虚幻的概念,与其高谈阔论的讨论HTML5未来的趋势和价值,不如一起研究一下现在的HTML5可以做出哪些成果,可以让我们做出出色的产品. Form Follows Function就是一個展示HTML5实现的网站,目前网站展示了14个作品,其中包括了交互操作以及视觉效果.这些效果本身并不是一个完整的产品,但是加入到产品中就能让产品生色不少. 1.散景(Bokeh) 一种图像的焦外效果,通过HTML5实现的这种效果可以加载在背景.字体浮现. 2.3D效果 3D西红柿罐头汤,可通过