canvas_进度条_html/css_WEB-ITnose

php中文网
发布: 2016-06-21 09:04:38
原创
1306人浏览过


如图,进度条是逆时针画的,如何让它 顺时针
以下是我的代码

<!doctype html><html><head><title> canvas 实例 </title><meta charset='utf-8'></head><body><canvas id="mycanvas" width="600" height="150">您的浏览器不支持canvas!</canvas><br/><button onclick="start();">start</button><button onclick="create();">create</button><script type="text/javascript">        //x,y 坐标,radius 半径,process 百分比,backcolor 中心颜色, procolor 进度颜色, fontcolor 中心文字颜色        function drowprocess(x,y,radius,process,backcolor,procolor,fontcolor){            var canvas = document.getelementbyid('mycanvas');            if (canvas.getcontext) {                var cts = canvas.getcontext('2d');            }else{                return;            }            cts.beginpath();            // 坐标移动到圆心            cts.moveto(x, y);            // 画圆,圆心是24,24,半径24,从角度0开始,画到2pi结束,最后一个参数是方向顺时针还是逆时针            cts.arc(x, y, radius,  math.pi * 2,0, true);            cts.closepath();            // 填充颜色            cts.fillstyle = backcolor;            cts.fill();            cts.beginpath();            // 画扇形的时候这步很重要,画笔不在圆心画出来的不是扇形            cts.moveto(x, y);            // 跟上面的圆唯一的区别在这里,不画满圆,画个扇形            cts.arc(x, y, radius, math.pi * 1.5, math.pi * 1.5 -  math.pi * 2 * process / 100,true);            cts.closepath();            cts.fillstyle = procolor;            cts.fill();            //填充背景白色            cts.beginpath();            cts.moveto(x, y);            cts.arc(x, y, radius - (radius * 0.06), 0, math.pi * 2, true);            cts.closepath();            cts.fillstyle = 'rgba(255,255,255,1)';            cts.fill();            // 画一条线//            cts.beginpath();//            cts.arc(x, y, radius-(radius*0.30), 0, math.pi * 2, true);//            cts.closepath();//            // 与画实心圆的区别,fill是填充,stroke是画线//            cts.strokestyle = backcolor;//            cts.stroke();            //在中间写字            cts.font = " 20pt arial";            cts.fillstyle = fontcolor;            cts.textalign = 'center';            cts.textbaseline = 'middle';            cts.moveto(x, y);            cts.filltext(process+"%", x, y);        }        bfb = 0;        time=0;        function start(){            drowprocess(60,60,55,bfb,'#ddd','#eaa0c6','#a6a3a6');//	drowprocess(180,60,55,bfb,'#ddd','#e74c3c','#e74c3c');//	drowprocess(300,60,55,bfb,'#ddd','#ff7f50','#ff7f50');            t = settimeout(start,25);            if(bfb>=100){                cleartimeout(t);                bfb=0;                           return;            }            bfb+=1;        }        function create(){            drowprocess(420,60,55,25,'#ddd','#32cd32','#32cd32');        }        start();    </script></body></html>
登录后复制

百度·度咔剪辑
百度·度咔剪辑

度咔剪辑,百度旗下独立视频剪辑App

百度·度咔剪辑 3
查看详情 百度·度咔剪辑


回复讨论(解决方案)

   // 画圆,圆心是24,24,半径24,从角度0开始,画到2PI结束,最后一个参数是方向顺时针还是逆时针            cts.arc(x, y, radius,  Math.PI * 2,0, true);
登录后复制

代码上不是写了么,你改FALSE试试

   // 画圆,圆心是24,24,半径24,从角度0开始,画到2PI结束,最后一个参数是方向顺时针还是逆时针            cts.arc(x, y, radius,  Math.PI * 2,0, true);
登录后复制

代码上不是写了么,你改FALSE试试



这就是false的效果

这个可以逆时针,但我还是不知道怎么改我的代码

 cts.arc(x, y, radius, Math.PI * 1.5, Math.PI * 1.5 -  Math.PI * 2 * process / 100,true);

<!DOCTYPE html><html><head>    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">    <meta name="apple-mobile-web-app-capable" content="yes" />    <meta name="apple-mobile-web-app-status-bar-style" content="black" />    <meta name="apple-touch-fullscreen" content="yes" />    <meta name="format-detection" content="telephone=no" />    <meta name="HandheldFriendly" content="true">    <meta http-equiv="x-rim-auto-match" content="none">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta property="og:type" content="website">    <meta property="og:image" content="75 pix image">    <meta property="og:site_name" content="South China Morning Post">    <meta property="og:description" content="Make every day matter">    <!--<meta property="fb:page_id" content="">-->    <title></title>    <link href='http://fonts.googleapis.com/css?family=PT+Sans+Narrow:700' rel='stylesheet' type='text/css'>    <link rel="apple-touch-icon-precomposed" sizes="57x57" href="img/apple-touch-icon-57.png">    <link rel="apple-touch-icon-precomposed" sizes="72x72" href="img/apple-touch-icon-72.png">    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="img/apple-touch-icon-114.png">    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="img/apple-touch-icon-144.png">    <link rel="icon" href="img/favicon.ico" />    <base target="_blank" />    <style type="text/css">        html {width: 100%; height: 100%;}        body {width: 100%; height: 100%; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;}        * {margin: 0; padding: 0;}        .splash {position: absolute; z-index: 999; display: table; width: 100%; height: 100%; background-color: #f3f0eb;}        .splash>.splash-inner {display: table-cell; text-align: center; vertical-align: middle;}        .splash h1,.splash h2,.splash h3 {font-weight: normal;}        .splash h3 {display: block; margin-top: 34px; font-size: 18px; color: #666; font-weight: lighter;}        .splash .loading-circle {position: relative; width: 204px; height: 204px; margin: auto;}        .splash .loading-circle>* {display: block; position: absolute; box-sizing: border-box; border-radius: 102px;}        .splash .loading-circle>canvas.bg {z-index: 1; width: 100%; height: 100%; border: 8px solid #ddd ;}        .splash .loading-circle>canvas.mask {z-index: 2; transform: rotate(-90deg); -webkit-transform: rotate(-90deg); -moz-transform: rotate(-90deg);}        .splash .loading-circle>p {z-index: 3;  width: 100%; height: 100%; text-align: center; line-height: 204px; font-size: 56px; font-weight: lighter; color: #999;}    </style></head><body ontouchmove="event.preventDefault();"><div class="splash" id="splash">    <div class="splash-inner">        <h1></h1>        <!--<h2>Make every day matter</h2>-->        <div class="loading-circle" id="loadingCircle">            <p><span id="loadedNum">0</span>%</p>            <canvas class="mask" id="loadingProgress" width="204" height="204"></canvas>            <canvas class="bg" width="204" height="204"></canvas>        </div>    </div></div><script>    var slots={},c=document.getElementById('loadingProgress'),ctx=c.getContext('2d');    window.hasLoaded = 0;    window.loading = false;    window.ulp = ulp;    function ulp(percent){        window.loading = true;        var i = 0, draw = null;        draw = setInterval(function(){            if (window.hasLoaded > 100) {                window.loading = false;                clearInterval(draw);                draw = null;                return true;            }            if (i<percent) {                d();                i++;                window.hasLoaded += 1;            } else {                clearInterval(draw);                draw = null;            }        }, 100);    }    function d(){        var lp = document.getElementById('loadedNum');        lp.innerHTML = window.hasLoaded;        var loaded = window.hasLoaded * 2 / 100 * Math.PI, cw = 204, hcw = 102;        ctx.clearRect (0,0,cw,cw);        ctx.beginPath();        ctx.arc(hcw,hcw,hcw-4, 0, loaded, false);        ctx.lineWidth = 8;        ctx.strokeStyle = '#ff6000';        ctx.stroke();    }    ulp(67);</script></body></html>
登录后复制

仅改成 false 是不行的,效果不对
要这样

cts.arc(x, y, radius, Math.PI * 1.5,  -3 * Math.PI * 1.5 +  Math.PI * 2 * process / 100, false);
登录后复制

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号