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 ...
随机推荐
- .net基础复习之一
一. ADO 与ADO.NET两种数据访问方式区别? 1. ADO与ADO.NET简介ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作 ...
- [转]深入理解JavaScript的变量作用域
1.JavaScript的作用域链 2.函数体内部,局部变量的优先级比同名的全局变量高. 3.JavaScript没有块级作用域. 4.函数中声明的变量在整个函数中都有定义. 5.未使用var关键字定 ...
- SQLSERVER中的假脱机spool
SQLSERVER中的假脱机spool 我发现网上对于假脱机的解释都非常零散,究竟假脱机是什么? 这几天在家里研究了一下,收集了很多网上的资料 假脱机是中文的翻译,而英文的名字叫做 spool 在徐老 ...
- Java设计模式之工厂模式(Factory)
前言: 前面学习了建造者设计模式,接下来学习一下Retrofit中使用的另外一个设计模式,工厂设计模式!!!里面采用工厂模式使得数据转换得到完全解耦,工厂模式的好处用到了极致,如此好的设计模式我们怎能 ...
- 应用程序框架实战十四:DDD分层架构之领域实体(基础篇)
上一篇,我介绍了自己在DDD分层架构方面的一些感想,本文开始介绍领域层的实体,代码主要参考自<领域驱动设计C#2008实现>,另外参考了网上找到的一些示例代码. 什么是实体 由标识来区分的 ...
- EasyUI DataGrid formatter 格式化增加链接
function fLoadTable() { $('#tt').datagrid({ title: '', ...
- 关于在用curl函数post网页数据时,遇上表单提交 type为submit 类型而且没有name和id时可能遇到的问题及其解决方法
curl函数库实现爬网页内容的链接在 http://www.cnblogs.com/linguanh/p/4292316.html 下面这个是没有name和id 标识的 <input type= ...
- hibernate笔记--双向一对多映射方法
前两节写了两个例子,分别是单向多对一的映射和单向一对多的映射,这一节继续以这个例子讲一下双向一对多的映射方法,如下图所示: 很多时候,我们既想从一对端获取多对端的信息,又想从多对端获取一对端的数据,这 ...
- 《HelloGitHub月刊》第07期
最近工作上的事比较多,<HelloGitHub>月刊第07期拖到月底才发. 本期月刊对logo和月刊的排版进行了优化,不知道大家的反馈如何,还望大家多多反馈,让<HelloGitHu ...
- Spinner控件
首先在XML文件中声明一个Spinner控件: <Spinner android:id="@+id/spinnerId" android:layout_width=" ...