canvas 画圈 demo
html代码:
<canvas id="clickCanvas2" width="180" height="180" data-total="100" data-curr="75"></canvas>
js代码:
$(function(){
$("#clickCanvas1”).canvasChart({
borderColor: "#24a8e6"
});
});
// canvas画圆函数开始
(function($, window, undefined) {
$.fn.canvasChart = function(options) {
var defaults = { };
var settings = $.extend({}, defaults, options);
var canvas = $(this).get(0);
var total = $(this).attr("data-total");
var curr = $(this).attr("data-curr");
var constrast = parseFloat(curr/total).toFixed(2); //比例
var context = null;
if ( !canvas.getContext) {
return;
}
// 定义开始点的大小
var startArc = Math.PI/2;
// 根据占的比例画圆弧
var endArc = (Math.PI * 2) * (constrast);
context = canvas.getContext("2d");
context.translate(90,90);
// 绘制背景圆
context.save(); // 保存当前状态 包含 颜色 路径 变形
context.beginPath(); // 定义一个子路径开始
context.strokeStyle = "#e9e9e9"; //线的颜色
context.lineWidth = "2";// 线的大小
context.arc(0, 0, 85, 0, Math.PI * 2, true);// 画一个圆
context.closePath();// 关闭子路径
context.stroke();
context.restore();// 还原上一个save保存的状态
// 绘制比例圆
context.save();
context.rotate(-startArc + Math.PI/180*2);
context.beginPath();
context.strokeStyle = settings.borderColor;
context.lineWidth = "4";
context.arc(0, 0, 83, 0, (curr % total == 0 ? Math.PI*2 : (endArc-Math.PI/180*3)), false);
context.stroke();
context.restore();
// 判断如果是百分百就不用画开始点和结束点的圆了
if ( curr % total == 0) {
return;
}
// 绘制开始时圆点
context.save();
context.rotate(-startArc);
context.beginPath();
context.fillStyle = settings.borderColor;
context.arc(83, 2, 2, 0, (Math.PI * 2) , false);
context.fill();
context.restore();
// 绘制结束时圆点
context.save();
context.rotate(endArc-startArc);
context.beginPath();
context.fillStyle = settings.borderColor;
context.arc(83, -2, 2, 0, (Math.PI * 2) , false);
context.fill();
context.restore();
}
})($, window);
// canvas画圆函数结束
canvas 画圈 demo的更多相关文章
- canvas画箭头demo
效果图: 代码: <!DOCTYPE html> <html> <title>canvas画箭头demo</title> <body> &l ...
- HTML5 之Canvas 绘制时钟 Demo
<!DOCTYPE html> <html> <head> <title>Canvas 之 时钟 Demo</title> <!--简 ...
- 深夜,用canvas画一个时钟
深夜,用canvas画一个时钟 查看demo 这几天准备阿里巴巴的笔试,可以说已经是心力交瘁,自从阿里和蘑菇街的内推被刷掉之后,开始越来越怀疑起自己的能力来,虽然这点打击应该是微不足道的.毕竟校招在刚 ...
- 兼容IE浏览器的canvas画线和圆圈
1.新建test.html文件,代码如下: <!DOCTYPE html><html><head> <meta charset="utf-8& ...
- python基础练习题(题目 画圈,学用circle画圆形。)
day37 --------------------------------------------------------------- 实例056:画圈 题目 画图,学用circle画圆形. 分析 ...
- 使用javascript和canvas画月半弯
使用javascript和canvas画月半弯,月半弯好浪漫!浏览器须支持html5 查看效果:http://keleyi.com/a/bjad/8xqdm0r2.htm 以下是代码: <!do ...
- 踩个猴尾不容易啊 Canvas画个猴子
踩个猴尾不容易啊 Canvas画个猴子 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&qu ...
- canvas画随机闪烁的星星
canvas画一颗星星: 规则的星星有内切圆和外切圆,每两个点之间的角度是固定的,因此可得到星星的每个点的坐标,画出星星. function drawStars(x,y,radius1,radius2 ...
- canvas画时钟
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
随机推荐
- iOS-中app启动闪退的原因
这种情况应和所谓的内存不足关系不大,很少有程序会在初始化时载入大量内容导致崩溃,并且这类问题也很容易在开发阶段被发现,所以内存不足造成秒退的可能性低(内存不足退,通常是程序用了一段时间,切换了几个画面 ...
- Uiautomator 2.0之BySelector类学习小记
1. BySelector与By静态类 1.1 BySelector类为指定搜索条件进行匹配UI元素, 通过UiDevice.findObject(BySelector)方式进行使用. 1.2 By类 ...
- 群福利:百度云管家-本地SVIP
效果 如果不想登录破解版的百度云(防止泄密)==>复制AppSettingApp.dat和users文件夹,这样你就可以免登录了 最稳定版本:https://yunpan.cn/cBTQc9Iu ...
- 解读sencha touch移动框架的核心架构(二)
本来这行要详解Ext.extend的,但是发现网站有很详细的,那么就跳过去吧 为保持一个系列的分析,还是先搬过来吧,下章开始分析Ext4.0的新架构 在Java中,我们在实现继承的时候存在下面几个事实 ...
- 【转】WPF防止界面卡死并显示加载中效果
原文地址:http://www.cnblogs.com/linyijia/archive/2013/02/06/2900609.html <Window x:Class="Loadin ...
- Android中实现双击事件
需求:需要给一个view实现双击效果,查看了api,发现没有api可以调用, 于是从网上参考了一段代码. xml布局文件: <RelativeLayout xmlns:android=" ...
- 解决HubbleDotNet搜索引擎索引数据不全的问题
HubbleDotnet是国产.NET平台搜索引擎的翘楚,开放源代码,使用方便,不过我一直在非生产环境下使用.官方网页在HubbleDotNet开源全文搜索数据库项目--技术详解. 以前当数据库使用M ...
- Android随笔之——PackageManager详解
参考:http://www.cnblogs.com/xingfuzzhd/p/3374504.html 今天要讲的是PackageManager.Android系统为我们提供了很多服务管理的类,包括A ...
- 纯CSS打造忙碌光标
我们经常会用到忙碌等待的情况,比如ajax等待回调,或者加载页面的时候,我们通常的做法就是放一张loading.gif图片,在那里转呀转. 以前是在pc上用,也没有觉得不妥,如今要在移动端用,问题就来 ...
- ASP.NET 5 单元测试中使用依赖注入
相关博文:<ASP.NET 5 使用 TestServer 进行单元测试> 在上一篇博文中,主要说的是,使用 TestServer 对 ASP.NET 5 WebApi 进行单元测试,依赖 ...