
发表日期: 2021-05-09 13:36:23 浏览次数:129
沈丘网站制作要多少钱【域名企业邮箱服务器注册申请办理】沈丘网络优化公司哪家好、沈丘软件开发外包价格、沈丘高端企业网站页面制作设计专业公司、沈丘微信公众号小程序购物支付搭建制作公司

沈丘县古称秣陵,是河南省周口市下辖县,位于河南省东南部,豫皖交界处,居颍水中游,西临项城,东与安徽界首接壤,总面积1080.53平方公里,辖2个街道,15个镇,5个乡,2013年,总人口129.31万人。
2014年,沈丘全县地方生产总值完成204.6亿元,比2013年增长9.3%,总量和增速均居周口全市第三位。 [1]
2018年8月1日,河南省政府常务会批准沈丘县退出贫困县。 [2]
河南省召开省政府常务会议,会议批准新县、沈丘县、新蔡县退出贫困县。 [2]
2018年9月25日,获得商务部“2018年电子商务进农村综合示范县”荣誉称号。 [3] 2019年12月31日,入选全国农村创新创业典型县。
平时我们画的图形都是规规矩矩的,那么如果我们用线条画了个抽象派作品,就像下面这图一样,童鞋们知道怎么用fill()染色呢?

这里就要用到数学上的一个方法——非零环绕原则,来判断哪块区域是里面,哪块区域是外面。接下来,我们具体来看下什么是非零环绕原则。

首先,我们得给图形确定一条路径,只要“一笔画”并且“不走重复路线”就可以了。如图,标出的是其中的一种路径方向。我们先假定路径的正方向为1(其实为-1啥的也都可以,正负方向互为相反数,不是0就行),那么反方向就是其相反数-1。
然后,我们在子路径切割的几块区域内的任意一点各取一条方向任意的射线,这里我只取了三个区域的射线为例,来判断这三块区域是“里面”还是“外面”。
接下来,我们就来判断了。S1中引出的射线L1,与S1的子路径的正方向相交,那么我们就给计数器+1,结果为+1,在外面。
S2中引出的射线L2,与两条子路径的正方向相交,计数器+2,结果为+2,在外面。
S3中引出的射线L3,与两条子路径相交,但是其中有一条的反方向,计数器+1-1,结果为0,在里面。没错,只要结果不为0,该射线所在的区域就在外面。
记得我们之前学过的arc方法吗?它的最后一个参数就是判断是路径方向的,如果是路径相反的两个同心圆在一起,图上色会有什么神奇的效果呢?

下面我们通过代码来实现它。
<!DOCTYPE html><html lang="zh"><head>
<meta charset="UTF-8">
<title>圆环</title>
<style>
body { background: url("./images/bg3.jpg") repeat; } #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; } </style></head><body><div id="canvas-warp">
<canvas id="canvas">
你的浏览器居然不支持Canvas?!赶快换一个吧!! </canvas></div><script>
window.onload = function(){ var canvas = document.getElementById("canvas");
canvas.width = 800;
canvas.height = 600; var context = canvas.getContext("2d");
context.fillStyle = "#FFF";
context.fillRect(0,0,800,600);
context.shadowColor = "#545454";
context.shadowOffsetX = 5;
context.shadowOffsetY = 5;
context.shadowBlur = 2;
context.arc(400, 300, 200, 0, Math.PI * 2 ,false);
context.arc(400, 300, 230, 0, Math.PI * 2 ,true);
context.fillStyle = "#00AAAA";
context.fill();
};</script></body></html>运行结果:

结合我们上一节学到了阴影效果,这个圆环看上去是不是特别的有立体感?
接下来,我们利用非零环绕原则和阴影来绘制一个镂空的剪纸效果。
<!DOCTYPE html><html lang="zh"><head>
<meta charset="UTF-8">
<title>镂空剪纸效果</title>
<style>
body { background: url("./images/bg3.jpg") repeat; } #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; } </style></head><body><div id="canvas-warp">
<canvas id="canvas">
你的浏览器居然不支持Canvas?!赶快换一个吧!! </canvas></div><script>
window.onload = function(){ var canvas = document.getElementById("canvas");
canvas.width = 800;
canvas.height = 600; var context = canvas.getContext("2d");
context.fillStyle = "#FFF";
context.fillRect(0,0,800,600);
context.beginPath();
context.rect(200,100,400,400);
drawPathRect(context, 250, 150, 300, 150);
drawPathTriangle(context, 345, 350, 420, 450, 270, 450);
context.arc(500, 400, 50, 0, Math.PI * 2, true);
context.closePath();
context.fillStyle = "#058";
context.shadowColor = "gray";
context.shadowOffsetX = 10;
context.shadowOffsetY = 10;
context.shadowBlur = 10;
context.fill();
}; //逆时针绘制矩形
function drawPathRect(cxt, x, y, w, h){ /**
* 这里不能使用beginPath和closePath,
* 不然就不属于子路径而是另一个全新的路径,
* 无法使用非零环绕原则
*/
cxt.moveTo(x, y);
cxt.lineTo(x, y + h);
cxt.lineTo(x + w, y + h);
cxt.lineTo(x + w, y);
cxt.lineTo(x, y);
} //逆时针绘制三角形
function drawPathTriangle(cxt, x1, y1, x2, y2, x3, y3){
cxt.moveTo(x1,y1);
cxt.lineTo(x3,y3);
cxt.lineTo(x2,y2);
cxt.lineTo(x1,y1);
}</script></body></html>运行结果:

这里手动绘制矩形的原因是我们想要得到逆时针路径的矩形,而且API提供的rect()方法绘制是顺时针矩形。另外,需要注意的是,这个剪纸是一个图形,一个路径。不能在绘制镂空三角形和绘制镂空矩形的方法里使用beginPath()和closePath(),不然它们就会是新的路径、新的图形,而不是剪纸的子路径、子图形,就无法使用非零环绕原则。
好了,这一节的内容就到这里,内容相对来说还是比较简单实用的。下一节就是Canvas API的最后一节了,大家已经掌握了这么多的绘制方法,是不是跃跃欲试了呢?那么,就扬起手中的笔,绘出自己的艺术家之魂吧~😋
沈丘网站制作要多少钱【域名企业邮箱服务器注册申请办理】沈丘网络优化公司哪家好、沈丘软件开发外包价格、沈丘高端企业网站页面制作设计专业公司、沈丘微信公众号小程序购物支付搭建制作公司
服务热线
顶部
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: http://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878