canvas基础二

一张画布上不可能只画一个图形的,所以我们需要把画笔抬起来,好让他开始画另外一个东西,这就可以用beginPath()来抬起画笔。



这就画出了三个独立的线了

上面三个咋一看你会认为它是线吗,不不,你一定认为他是矩形,所以我们来看看怎么画矩形,有三种画矩形的方法



绘制圆形

arc() 方法创建弧/曲线(用于创建圆或部分圆)。

    *语法:ctx.arc(x,y,r,sAngle,eAngle,counterclockwise);

    *arc:  弧(度)弧形物;天穹 英 [ɑːk]   美[ɑrk]

    *解释:

       - x,y:圆心坐标。

       - r:半径大小。

       - sAngle:绘制开始的角度。 圆心到最右边点是0度,顺时针方向弧度增大。

       - eAngel:结束的角度,注意是弧度。π

       - counterclockwise:是否是逆时针。true是逆时针,false:顺时针

       - 弧度和角度的转换公式: rad = deg*Math.PI/180; 

       - 在Math提供的方法中**sin、cos等都使用的弧度**   



那么来实际应用一下这个新操作吧

首先,准备一点静态数据、

var tempAngle = -90;//绘制到哪个角度了,起始角度是-90度。

			//设置角度的中间变量
			var x0 = 400, y0 = 400;
			var radius = 200;
			// 从-90度开始绘制
			for( var i = 0; i < data.length; i++ ) {
				ctx.beginPath();//因为设置不同的颜色,所以每次绘制完起一个新状态
				ctx.moveTo(x0,y0);
			    //当前扇形的角度
				var angle = data[i].value * 360;

				ctx.fillStyle = data[i].color;
				//开始从 tempAngle绘制
				var startAngle  = tempAngle * Math.PI / 180;
				//从tempAngle绘制到 我们自己的angle区域
				var endAngle = (tempAngle + angle) * Math.PI / 180;

				//参数: x0,y0 圆心坐标,  radius:半径
				// startAngle:开始绘制的弧度
				// endAngle:结束绘制的弧度!!
				ctx.arc(x0, y0, radius, startAngle, endAngle);

				//绘制文字:
				var txt = data[i].value * 100 + '%';

				var x, y;
				// 计算出文字的要放的角度
				var txtAngle = tempAngle + 1/2 * angle;

				//计算文字的 坐标
				x = x0 + Math.cos( txtAngle * Math.PI / 180 ) * (radius + 20); 
				y = y0 + Math.sin( txtAngle * Math.PI / 180 ) * (radius + 20);

				//如果文字在圆形的左侧,那么让文字 对齐方式为 文字结尾对齐当前坐标。
				if( txtAngle > 90 && txtAngle < 270 ) {
					ctx.textAlign = 'end';
				}

				//把文字绘制到 扇形区域的 旁边
				ctx.fillText(txt, x, y);

				ctx.fill();

				tempAngle += angle;//下一次绘制的起始角度

一个扇形统计图就出来了


设置文字的对齐方式

apitextAlign       设置或返回文本内容的当前对齐方式

    *start :    默认。文本在指定的位置开始。

    *end   :   文本在指定的位置结束。

    *center:    文本的中心被放置在指定的位置。

    *left  :   文本左对齐。

    *right :    文本右对齐。




Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值