利用HTML5自定义绘制正在加载图案(spinner)
来源:互联网 发布:sas有几个软件 编辑:程序博客网 时间:2024/05/27 14:12
这几天自己在学习HTML5,看到很多新的元素,总感觉手痒痒,就想自己写一个,今天想起曾经一个项目里用的正在加载图案(spinner)是用的插件,所以自己就像要用canvas绘制一个。
初学HTML5,程序肯定有不完美的地方!!
思路就是绘制一个简单的图形,然后让图形以一个点为中心按一定的速率旋转!
添加canvas元素:
<canvas id="canvas" width="500" height="500" style="border:1px solid black;background:#484646">
您的浏览器版本太老,不支持这个控件
</canvas>
绘制图形:
效果如下:
这个很简单,相信用过canvas的都会绘制
//旋转时内圆的半径
var radiusinner = 60,
//旋转时外圆的半径
radiusoutter = 120,
//每一个花瓣的宽度
spinwidth = 30,
//花瓣的数量
spinnum = 12;
var canvas = document.getElementById("canvas");
var context2D = canvas.getContext("2d");
//为了方便,用于获取长方形的起点坐标
var s_height = radiusoutter - radiusinner - spinwidth;
var s_width = spinwidth;
var s_x = 0 - spinwidth/2
var s_y = 0 - (radiusoutter - s_width / 2);;
context2D.translate(radiusoutter, radiusoutter);//改变坐标系的坐标原点
//用于生成图案中的一个
function create() {
context2D.beginPath();
context2D.arc(0, s_y, s_width/2, 0, Math.PI * 2, true);
context2D.arc(0, s_y + s_height, s_width/2, 0, Math.PI * 2, true);
context2D.closePath();
context2D.fillStyle = "#fff";
context2D.fill();
context2D.fillRect(s_x, s_y, s_width, s_height);
}
我觉得这段程序中,对我学习影响最大的是改变坐标系坐标原点这个地方,最开始的时候,坐标系原点默认的是canvas控件的左上角,但是在图像旋转的时候,是已控件的左上角为参考的,而这里想要的是外圆的圆点处作为旋转的参考点,所以,提前将坐标系的圆点改变,这样方便下面的旋转。
旋转图形:
var snum = 0;
function move() {
context2D.clearRect(-120, -120, 500, 500);
snum = snum === spinnum ? 0 : snum;
snum++;
var angle = (snum * 360 / spinnum) * Math.PI / 180;
context2D.save();
context2D.rotate(angle);
create();
context2D.restore();
}
var i = setInterval(move, 30);
这样,就可以自定义完成一个简单的图形!
- 利用HTML5自定义绘制正在加载图案(spinner)
- HTML5利用canvas绘制太极图案
- 利用canvas绘制正在加载的动画
- 自定义view绘制太极图案
- Spinner加载自定义Adapter
- HTML5 Canvas组件绘制太极图案
- (六)利用processing实现图案的绘制
- 利用HTML5绘制图形
- Qt自定义加载控件Spinner
- html5 javascript canvas API 绘制树形图案A
- 【python 可视化】python利用matplotlib库绘制饼图案例
- 自定义Selector篇,改变样式,绘制图案和背景
- html5实现正在加载中样式
- cocos2d-js html5自定义鼠标图案及设置原点方法
- android正在加载效果(自定义view)
- 自定义Dialog实现“正在加载,请稍候”
- 绘制菱形图案
- 绘制余弦图案
- windows下手动安装和配置xamarin
- 面试题
- oracle练习题 实验一
- 关于eval(function(p,a,c,k,e,d)以及unicode的解码练习
- snmp walk 跟 get 的区别
- 利用HTML5自定义绘制正在加载图案(spinner)
- 11g中_serial_direct_read是动态参数,可以在线修改
- [LeetCode] Search in Rotated Sorted Array
- nmake选项
- uva11542 Square
- C语言指针学习三
- Android之解析Android Map地图返回的Json数据
- android ListView适配器之SimpleAdapter的用法
- ipv4 ipv6简介