使用canvas繪制走動(dòng)的鐘表

效果圖:

Paste_Image.png

思路:
1.設(shè)置畫(huà)布
2.利用ctx.arc繪制出大圓
3.利用for循環(huán)繪制鐘表的刻度值(小時(shí)每個(gè)刻度間隔30度竹捉,分鐘每個(gè)刻度間隔6度)萍歉,注意設(shè)置畫(huà)布的原點(diǎn)位置
4.設(shè)置時(shí)針选酗、分針、秒針
5.獲取當(dāng)期時(shí)間,并設(shè)置對(duì)應(yīng)的小時(shí)、分鐘宁否、秒的時(shí)間
6.設(shè)置指針走動(dòng):
6.1清屏
6.2重新繪制鐘表的大圓和刻度值
6.3利用ctx.rotate設(shè)置時(shí)分秒針的旋轉(zhuǎn)
另:寫(xiě)完了就發(fā)上來(lái)了,代碼沒(méi)經(jīng)過(guò)優(yōu)化缀遍,請(qǐng)各位大神諒解慕匠。

直接上代碼
html:

<canvas id="lCanvas" width="900px" height="600px"></canvas>

css:

<style type="text/css">
    * {
        margin: 0;
        padding: 0;
        list-style: none;
    }

    #lCanvas {
        margin-left: 250px;
        border: 1px solid #000;
    }
</style>

javascript:

<script>
    var canvas = document.getElementById("lCanvas");
    //設(shè)置上下文
    var ctx = canvas.getContext("2d");

    //清屏
    function clear() {
        ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
    }

    //鐘表刻度設(shè)置
    function Scale() {
        //大圓
        ctx.beginPath();
        ctx.arc(450, 300, 260, 0, 2 * Math.PI, false);
        ctx.strokeStyle = "#FFC0CB";
        ctx.lineWidth = 10;
        ctx.stroke();
        //刻度
        var hours = 12;
        var mins = 60;
        for (var i = 0; i < hours; i++) {
            ctx.save();
            ctx.beginPath();
            ctx.strokeStyle = "black";
            ctx.translate(canvas.width * 0.5, canvas.height * 0.5);
            ctx.rotate(i * 30 * Math.PI / 180);
            ctx.moveTo(-5,-190);
            ctx.lineTo(5,-190)
            ctx.lineWidth = 25;
            ctx.stroke();
            ctx.restore();
        }
        for (var i = 0; i < mins; i++) {
            ctx.save();
            ctx.beginPath();
            ctx.strokeStyle = "black";
            ctx.translate(canvas.width * 0.5, canvas.height * 0.5);
            ctx.rotate(i * 6 * Math.PI / 180);
            ctx.moveTo(-2,-195);
            ctx.lineTo(2,-195);
            ctx.lineWidth = 10;
            ctx.stroke();
            ctx.restore();
        }
        //中心圓
        ctx.save();
        ctx.beginPath();
        ctx.translate(canvas.width * 0.5, canvas.height * 0.5);
        ctx.arc(0, 0, 10, 0, 2 * Math.PI);
        ctx.fillStyle = 'black';
        ctx.fill();
        ctx.restore();
    }

    //走動(dòng)
    function timeRun() {
        setInterval(function () {
            //清屏
            clear();
            //畫(huà)時(shí)鐘
            Scale();
            //獲取時(shí)間
            var date = new Date();
            var sec= date.getSeconds();
            var min = date.getMinutes() + sec / 60;
            var hour = date.getHours() + min / 60;
            hour = hour > 12 ? hour - 12 : hour;

            //時(shí)針
            ctx.save();
            ctx.beginPath();
            ctx.translate(canvas.width * 0.5, canvas.height * 0.5);
            ctx.rotate(hour * 30 * Math.PI / 180);
            ctx.strokeStyle = '#000';
            ctx.moveTo(0,-130);
            ctx.lineTo(0,5);
            ctx.lineWidth = 12;
            ctx.stroke();
            ctx.restore();

            //分針
            ctx.save();
            ctx.beginPath();
            ctx.translate(canvas.width * 0.5, canvas.height * 0.5);
            ctx.rotate(min * 6 * Math.PI / 180);
            ctx.strokeStyle = '#ccc';
            ctx.moveTo(0,-150);
            ctx.lineTo(0,5);
            ctx.lineWidth = 8;
            ctx.stroke();
            ctx.restore();

            //秒針
            ctx.save();
            ctx.beginPath();
            ctx.translate(canvas.width * 0.5, canvas.height * 0.5);
            ctx.rotate(sec * 6 * Math.PI / 180);
            ctx.strokeStyle = 'red';
            ctx.moveTo(0,-200);
            ctx.lineTo(0,3);
            ctx.lineWidth = 3;
            ctx.stroke();
            ctx.restore();
        }, 1000);
    }

    timeRun();
</script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市域醇,隨后出現(xiàn)的幾起案子台谊,更是在濱河造成了極大的恐慌,老刑警劉巖譬挚,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锅铅,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡减宣,警方通過(guò)查閱死者的電腦和手機(jī)盐须,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蚪腋,“玉大人丰歌,你說(shuō)我怎么就攤上這事√肟” “怎么了立帖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)悠砚。 經(jīng)常有香客問(wèn)我晓勇,道長(zhǎng),這世上最難降的妖魔是什么灌旧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任绑咱,我火速辦了婚禮,結(jié)果婚禮上枢泰,老公的妹妹穿的比我還像新娘描融。我一直安慰自己,他們只是感情好衡蚂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布窿克。 她就那樣靜靜地躺著骏庸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪年叮。 梳的紋絲不亂的頭發(fā)上具被,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音只损,去河邊找鬼一姿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛跃惫,可吹牛的內(nèi)容都是我干的叮叹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼辈挂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼衬横!你這毒婦竟也來(lái)了裹粤?” 一聲冷哼從身側(cè)響起终蒂,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎遥诉,沒(méi)想到半個(gè)月后拇泣,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡矮锈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年霉翔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苞笨。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡债朵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瀑凝,到底是詐尸還是另有隱情序芦,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布粤咪,位于F島的核電站谚中,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏寥枝。R本人自食惡果不足惜宪塔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望囊拜。 院中可真熱鬧某筐,春花似錦、人聲如沸冠跷。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至弟疆,卻和暖如春戚长,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怠苔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工同廉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人柑司。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓迫肖,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親攒驰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蟆湖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一:canvas簡(jiǎn)介 1.1什么是canvas? ①:canvas是HTML5提供的一種新標(biāo)簽 ②:HTML5 ...
    GreenHand1閱讀 4,685評(píng)論 2 32
  • Cnavas繪制時(shí)鐘 背景圖的繪制(大圓玻粪、數(shù)字隅津、小圓點(diǎn)),掌握基礎(chǔ)知識(shí):圓的繪制(arc方法)劲室,關(guān)于圓的弧度的計(jì)算...
    Iris_mao閱讀 2,467評(píng)論 7 26
  • 一伦仍、canvas簡(jiǎn)介 1.1 什么是canvas?(了解) 是HTML5提供的一種新標(biāo)簽 Canvas是一個(gè)矩形區(qū)...
    Looog閱讀 3,942評(píng)論 3 40
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫(huà)效果很洋,實(shí)現(xiàn)這些動(dòng)畫(huà)的過(guò)程并不復(fù)雜充蓝,今天將帶大家一窺ios動(dòng)畫(huà)全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,495評(píng)論 6 30
  • “身份證可以造假, 結(jié)婚證可以藏起來(lái)协怒, 承諾可以翻臉不認(rèn)人涝焙, 名字公安局可以改。 但刻進(jìn)身體的刺青不騙人斤讥, 沒(méi)洗掉...
    低俗青年制造所閱讀 797評(píng)論 0 2