中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

js+html5實(shí)現(xiàn)canvas繪制網(wǎng)頁(yè)時(shí)鐘的方法
來(lái)源:易賢網(wǎng) 閱讀:1771 次 日期:2016-06-25 13:44:06
溫馨提示:易賢網(wǎng)小編為您整理了“js+html5實(shí)現(xiàn)canvas繪制網(wǎng)頁(yè)時(shí)鐘的方法”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了js+html5實(shí)現(xiàn)canvas繪制網(wǎng)頁(yè)時(shí)鐘的方法,涉及html5圖形繪制的基礎(chǔ)技巧,感興趣的朋友可以參考一下

本文實(shí)例講述了js+html5實(shí)現(xiàn)canvas繪制網(wǎng)頁(yè)時(shí)鐘的方法,畫(huà)的是一個(gè)可用于網(wǎng)頁(yè)的、帶擺的鐘表,可以通過(guò)按鈕調(diào)整其大小和位置,具體實(shí)現(xiàn)內(nèi)容如下

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Clock</title>

<script type="text/javascript"> 

var xClock=300; //表心位置

var yClock=250; //表心位置

var d=180.0;//鐘表圓面的半徑

var value = -d*1.07;

function enlarge(){

 d++;

}

function reduce(){

 d--;

}

function westwards(){

var c=document.getElementById("myCanvas");

var g2d=c.getContext("2d"); 

g2d.translate(-1,0); //置坐標(biāo)軸原點(diǎn)于表心

 c=document.getElementById("myPendulum");

 g2d=c.getContext("2d"); 

g2d.translate(-1,0); //置坐標(biāo)軸原點(diǎn)于表心

}

function eastwards(){

var c=document.getElementById("myCanvas");

var g2d=c.getContext("2d"); 

g2d.translate(1,0); //置坐標(biāo)軸原點(diǎn)于表心

 c=document.getElementById("myPendulum");

 g2d=c.getContext("2d"); 

g2d.translate(1,0); //置坐標(biāo)軸原點(diǎn)于表心

}

function upwards(){

var c=document.getElementById("myCanvas");

var g2d=c.getContext("2d"); 

g2d.translate(0,-1); //置坐標(biāo)軸原點(diǎn)于表心

 c=document.getElementById("myPendulum");

 g2d=c.getContext("2d"); 

g2d.translate(0,-1); //置坐標(biāo)軸原點(diǎn)于表心

}

function downwards(){

var c=document.getElementById("myCanvas");

var g2d=c.getContext("2d"); 

g2d.translate(0,1); //置坐標(biāo)軸原點(diǎn)于表心

 c=document.getElementById("myPendulum");

 g2d=c.getContext("2d"); 

g2d.translate(0,1); //置坐標(biāo)軸原點(diǎn)于表心

}

function fillPolygon( a, b, fillColor, ctx){

ctx.beginPath();

ctx.moveTo(a[0],b[0]);

for (var j=1;j<a.length;j++)

ctx.lineTo(a[j],b[j]);

ctx.closePath();

ctx.fillStyle=fillColor;

ctx.fill();

}

function randomColor(){ 

var s ="#";

for (var i=0;i<3;i++)

s += Math.floor(Math.random()*16).toString(16);

return s;

}

function locateCoordinate() {

var c=document.getElementById("myCanvas");

var g2d=c.getContext("2d"); 

g2d.translate(xClock,yClock); //置坐標(biāo)軸原點(diǎn)于表心

var c=document.getElementById("myPendulum");

var g2d=c.getContext("2d"); 

g2d.translate(xClock,yClock); //置坐標(biāo)軸原點(diǎn)于表心

}

function drawFace(){ //定義畫(huà)鐘表表面drawFace方法

/* 表示1,2,4,5,7,8,10,11點(diǎn)鐘位置的較小尺寸的菱形標(biāo)志頂點(diǎn)坐標(biāo)數(shù)組 */

var x = new Array(0, Math.round(d/30), 0, Math.round(-d/30));

var y = new Array( Math.round(-d*1.07),-d,Math.round(-d*0.9),-d);

/* 表示3,6,9,12點(diǎn)鐘位置的較大尺寸的菱形標(biāo)志頂點(diǎn)坐標(biāo)數(shù)組 */

var x1= new Array(0,Math.round(d/15),0,Math.round(-d/15));

var y1 =new Array(Math.round(-d*1.13),-d,Math.round(-d*0.9),-d);

var c=document.getElementById("myCanvas");

var g2d=c.getContext("2d");

 //下面開(kāi)始 準(zhǔn)備畫(huà)鐘表圓面邊

 g2d.beginPath();

 g2d.arc(0,0,d, 0 , 2*Math.PI);

 g2d.strokeStyle="lightGray";

 g2d.lineWidth=d/18;

 g2d.stroke(); //最后一筆,畫(huà)鐘表圓面邊

 //下面開(kāi)始準(zhǔn)備畫(huà)表示 每個(gè)鐘點(diǎn) 的菱形

  for (var i=0;i<12;i++) 

 { //for 循環(huán)語(yǔ)句的循環(huán)體開(kāi)始

 if (i%3==0){ //畫(huà)較大尺寸的紅色菱形,表示3,6,9,12點(diǎn)

 fillPolygon( x1, y1, "red", g2d);

 } else {//畫(huà)較小尺寸的桔黃色菱形,表示其余的鐘點(diǎn)

 fillPolygon(x,y,"orange",g2d);

 }

//以鐘表表心為原點(diǎn),坐標(biāo)系順時(shí)針轉(zhuǎn)動(dòng)30度,以便畫(huà)下一個(gè)鐘點(diǎn)位置的菱形標(biāo)記

 g2d.rotate(Math.PI/6.0); 

 }//for 循環(huán)語(yǔ)句的循環(huán)體結(jié)束

}//畫(huà)鐘表表面 drawFace 方法結(jié)束

/* 定義畫(huà)鐘表的時(shí)針、分針、和秒針的方法 drawNeedles

* 形參 Hradian,單位弧度, 為時(shí)針從0點(diǎn)算起的弧度位置,

* 形參 Mradian,單位弧度, 為分針從0分算起的弧度位置,

* 形參 Sradian,單位弧度, 為秒針從0秒算起的弧度位置。*/

function drawNeedles( Hradian, Mradian, Sradian ){

var c=document.getElementById("myCanvas");

var g2d=c.getContext("2d");

//以鐘表表心為原點(diǎn),坐標(biāo)系順時(shí)針轉(zhuǎn)動(dòng)Hradian弧度,以便畫(huà)出時(shí)針

 g2d.rotate(Hradian); 

  //表示時(shí)針的多邊形頂點(diǎn)的坐標(biāo)數(shù)組

var Hx =new Array(0, Math.round(d/19),0, Math.round(-d/19) ); 

var Hy =new Array( Math.round(-d/2), Math.round(-d/3), 0, Math.round(-d/3) );

 fillPolygon(Hx,Hy,"magenta",g2d);//時(shí)針設(shè)為紫紅色,

//以鐘表表心為原點(diǎn),坐標(biāo)系逆時(shí)針轉(zhuǎn)動(dòng)Hradian弧度,以還原坐標(biāo)系

 g2d.rotate(-Hradian); 

//以鐘表表心為原點(diǎn),坐標(biāo)系順時(shí)針轉(zhuǎn)動(dòng)Mradian弧度,以便畫(huà)出分針 

 g2d.rotate(Mradian);

//表示分針的多邊形頂點(diǎn)的坐標(biāo)數(shù)組

var Mx=new Array(Math.round(-d/19),0,Math.round(d/19));

var My=new Array(0,Math.round(-d/1.3),0);

 fillPolygon(Mx,My,"gray",g2d); //分針設(shè)為灰色

//以鐘表表心為原點(diǎn),坐標(biāo)系逆時(shí)針轉(zhuǎn)動(dòng)Mradian弧度,以還原坐標(biāo)系

 g2d.rotate(-Mradian);

//以鐘表表心為原點(diǎn),坐標(biāo)系順時(shí)針轉(zhuǎn)動(dòng)Sradian弧度,以便畫(huà)出秒針 

 g2d.rotate(Sradian);

 // 秒針設(shè)為隨機(jī)顏色 

 g2d.strokeStyle='green';

 g2d.lineWidth="1";

 g2d.moveTo(0,0);

 g2d.lineTo(0,Math.round(-d/1.1));

 g2d.stroke();

 g2d.beginPath();

 g2d.arc(0,Math.round(-d),d/18, 0 , 2*Math.PI);

 g2d.fillStyle=randomColor();

 g2d.fill(); //最后一筆,畫(huà)秒針頂點(diǎn)的小球

//以鐘表表心為原點(diǎn),坐標(biāo)系逆時(shí)針轉(zhuǎn)動(dòng)Sradian弧度,以還原坐標(biāo)系

 g2d.rotate(-Sradian); 

} //畫(huà)表針?lè)椒?drawNeedles的代碼塊結(jié)束 

/* 畫(huà)出字符串來(lái)表示瞬時(shí)時(shí)間 */

function DrawTime() {

 var time=new Date();  //獲取當(dāng)前時(shí)間。

 var hour=time.getHours(); //獲取小時(shí)

 var minute=time.getMinutes();//獲取分鐘

 var second=time.getSeconds();//獲取秒數(shù)

 var apm="AM"; //默認(rèn)顯示上午:AM.

 var canvas =document.getElementById("myCanvas"); 

 var g2d =canvas.getContext("2d"); 

 if(hour>12){

  //按照12小時(shí)制止顯示

  hour=hour-12;

  apm="PM";

 }

 if(minute<10){

  //如果分鐘只有1位,補(bǔ)0顯示

  minute="0"+minute;

 }

 if(second<10){ //如果秒數(shù)只有1位,補(bǔ)0顯示

  second="0"+second;

 }

 g2d.clearRect(-xClock,-yClock,600,600); //清屏

var s = hour+":"+minute+":"+second+":"+apm;

  g2d.fillStyle="red";

  g2d.font = d/4+ "px KAITI"; 

  g2d.fillText(s,-d/1.8, d*1.4);

g2d.font= d/4 + "px 楷體";

// Create gradient

var gradient=g2d.createLinearGradient(0,0,canvas.width,0);

gradient.addColorStop("0","magenta");

gradient.addColorStop("0.5","blue");

gradient.addColorStop("1.0","red");

// Fill with gradient

g2d.fillStyle=gradient;

g2d.fillText("大數(shù)據(jù)",-d/2.6,d/2);

//獲得實(shí)例創(chuàng)建瞬間的秒讀數(shù),由此計(jì)算出秒針,相對(duì)于0 秒,走過(guò)的弧讀數(shù)

var c = Math.PI/30 * second; 

//獲得創(chuàng)建瞬間的的分鐘讀數(shù),由此計(jì)算出分針,相對(duì)于0 分,走過(guò)的弧讀數(shù)

var b = Math.PI/30 * minute;

/* 獲得創(chuàng)建瞬間的的鐘點(diǎn)讀數(shù),由此計(jì)算出時(shí)針,相對(duì)于0 點(diǎn),走過(guò)的弧讀數(shù)。

 * 時(shí)針走過(guò)的弧度為整點(diǎn)的度數(shù)(每小時(shí)走30度),加上走過(guò)分鐘數(shù)的修正值 */

var a = Math.PI/180*(30 * hour + minute/2);

/* 坐標(biāo)系平移 (xClock,yClock) ,使得坐標(biāo)軸成為表盤(pán)中心 */

 drawFace();

 drawNeedles( a, b, c); 

 } // 方法 DrawTime 的代碼塊結(jié)束

 var i=0;

function pendulum() { //pendulum_bob

var instantAngle = new Array(64,61,56,49,40,29,16,3,-8,

-16,-29,-40,-49,-56,-61,-64,-64,-64,-61,-56,-49,-40,-29,

-16,-8,3,16,29,40,49,56,61,64,64); //擺的即時(shí)角度數(shù)組

var c=document.getElementById("myPendulum");

var ctx=c.getContext("2d");

var alpha=instantAngle[i++%instantAngle.length]*Math.PI/180;

ctx.clearRect(-300,-300,900,900);

ctx.rotate(alpha);

 // 秒針設(shè)為隨機(jī)顏色 

 ctx.fillStyle='brown';

 ctx.fillRect(-3,0,6,d*1.4);

ctx.shadowBlur=20;

ctx.shadowColor="black";

ctx.fillStyle="blue";

//ctx.fillRect(-d/3.5, d*1.35, d/1.6, d/4.4);

ctx.font="40px 楷體";

// Create gradient

var gradient=ctx.createLinearGradient(0,0,c.width,0);

gradient.addColorStop("0","magenta");

gradient.addColorStop("0.5","blue");

gradient.addColorStop("1.0","white");

// Fill with gradient

//ctx.fillStyle=gradient;

ctx.fillStyle="red";

ctx.fillText("大數(shù)據(jù)",-d/3.2,d*1.55);

ctx.shadowBlur=0;

ctx.shadowColor=null;

ctx.fillStyle=null;

ctx.rotate(-alpha);

}

function preparation(){

 locateCoordinate()

 setInterval('DrawTime()',500);

 setInterval('pendulum()',200);

</script>

<style>

#myCanvas{

 z-index:3;

 position:absolute; left:0px; top:0px;

}

#myPendulum{

 z-index:2;

 position:absolute; left:0px; top:0px;

}

#controlPanel{

 position:absolute; left:600px; top:0px;

 width:100px;

 text-align:center;

 font-family:"楷體";

 font-size:20px;

 font-weight:bold;

 color:#6C0;

}

</style>

</head>

<body onLoad="preparation()">

<canvas id="myCanvas" width="600" height="600" > 

   <p>Your browserdoes not support the canvas element!</p> 

</canvas>

<canvas id="myPendulum" width="600" height="600" > 

   <p>Your browserdoes not support the canvas element!</p> 

</canvas>

<div id="controlPanel">

<table>

<tr><td>控制</td><td>按鈕</td></tr>

<tr><td><input value="增大" type="button" onclick="enlarge()"></button></td>

<td><input value="縮小" type="button" onclick="reduce()"></button></td></tr>

<tr><td><input value="左移" type="button" onclick="westwards()"></button></td>

<td><input value="右移" type="button" onclick="eastwards()"></button></td></tr>

<tr><td><input value="上移" type="button" onclick="upwards()"></button></td>

<td><input value="下移" type="button" onclick="downwards()"></button></td>

</tr>

</table>

</div>

</body>

</html>

名單

希望本文所述對(duì)大家的web程序設(shè)計(jì)有所幫助。

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢(xún)回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢(xún)?yōu)闇?zhǔn)!

2026上岸·考公考編培訓(xùn)報(bào)班

  • 報(bào)班類(lèi)型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢(xún) | 簡(jiǎn)要咨詢(xún)須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專(zhuān)用圖標(biāo)
聯(lián)系電話(huà):0871-65099533/13759567129 獲取招聘考試信息及咨詢(xún)關(guān)注公眾號(hào):hfpxwx
咨詢(xún)QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
在线欧美日韩精品| 黄色亚洲在线| 久久久噜噜噜久久人人看| 久久亚洲一区| 国产精品欧美经典| 国产亚洲欧美另类中文| 亚洲精品一区二区三区四区高清| 亚洲在线免费| 欧美一级大片在线观看| 欧美激情一区二区久久久| 欧美顶级少妇做爰| 国产欧美三级| 亚洲在线免费| 欧美国产1区2区| 国产一区二区三区高清| 亚洲一区二区三区四区五区午夜 | 国产一区二区三区在线观看免费| 国产精品日韩一区二区| 亚洲视频1区| 久久亚洲私人国产精品va媚药| 国产精品草莓在线免费观看| 亚洲人成网站999久久久综合| 久久久国产精品亚洲一区 | 亚洲麻豆视频| 亚洲自拍偷拍福利| 欧美日韩日本国产亚洲在线| 国产亚洲视频在线观看| 激情综合色综合久久| 亚洲大黄网站| 久久男人av资源网站| 韩国精品久久久999| 亚洲资源在线观看| 国产精品av一区二区| 日韩视频一区二区三区| 欧美α欧美αv大片| 一区二区三区中文在线观看| 久久国产精品99久久久久久老狼| 国产日韩一区欧美| 亚洲一区3d动漫同人无遮挡| 欧美日韩国产二区| 日韩天堂av| 国产精品久久久久久久7电影| 亚洲午夜精品久久久久久浪潮| 国产精品久久久久秋霞鲁丝| 亚洲一区二区视频在线观看| 欧美日韩视频免费播放| 精品成人一区二区三区| 亚洲一区二三| 亚洲激精日韩激精欧美精品| 久久亚洲捆绑美女| 亚洲高清视频在线观看| 欧美激情欧美激情在线五月| 亚洲精品偷拍| 欧美午夜视频在线| 久久久久一区二区| 亚洲高清在线| 欧美日韩免费区域视频在线观看| 亚洲视频视频在线| 国产视频一区三区| 麻豆成人综合网| 亚洲在线电影| 在线精品亚洲| 欧美日韩综合在线免费观看| 亚洲欧美网站| 国产综合色在线视频区| 欧美精品一区二区三区高清aⅴ| 亚洲欧美日韩一区二区在线 | 国产精品高精视频免费| 一区二区欧美国产| 国内精品视频666| 国内一区二区三区| 欧美激情综合网| 欧美一区二区高清在线观看| 亚洲老司机av| 在线看日韩欧美| 欧美日韩一区二区视频在线| 久久夜色精品国产| 一区二区三区www| 欧美v日韩v国产v| 日韩一级网站| 亚洲精品之草原avav久久| 狠狠操狠狠色综合网| 欧美精品三区| 亚洲国产精品成人| 国外成人性视频| 国产曰批免费观看久久久| 国产精品丝袜白浆摸在线| 欧美91大片| 欲香欲色天天天综合和网| 欧美日韩免费在线视频| 欧美精品久久久久久久| 亚洲欧美日韩视频一区| 亚洲在线观看免费| 亚洲欧美色婷婷| 亚洲欧美日韩系列| 先锋影音一区二区三区| 亚洲欧美一区二区精品久久久| 一区二区三区你懂的| 亚洲精品欧美日韩专区| 极品中文字幕一区| 在线播放中文一区| 国产嫩草影院久久久久| 欧美视频一二三区| 欧美日韩国内| 欧美日韩国产区| 欧美激情一区二区三区高清视频| 欧美在线观看一区二区| 日韩一区二区精品视频| 国产农村妇女精品一区二区| 国产精品久久久久久久久免费| 欧美亚洲成人免费| 国产欧美一区二区三区视频| 国产欧美三级| 欧美日韩精品一二三区| 国产精品久久久久久妇女6080| 欧美视频不卡中文| 国产欧美视频一区二区三区| 国产揄拍国内精品对白| 国产欧美一区二区精品仙草咪| 欧美影院在线播放| 欧美中文字幕精品| 极品尤物一区二区三区| 欧美大片网址| 欧美一二三区在线观看| 久久国产精品久久久| 羞羞视频在线观看欧美| 久久男人av资源网站| 欧美日韩成人一区二区三区| 国产一区自拍视频| 亚洲国产高清一区二区三区| 亚洲一区二区精品| 噜噜噜91成人网| 国产精品国色综合久久| 国产一区二区0| 欧美激情精品久久久久久大尺度 | 久久久91精品国产| 欧美精品一区三区在线观看| 国产精品久久久久久久午夜| 激情久久久久久久久久久久久久久久| 日韩一区二区福利| 久久午夜精品| 国产精品久久久久永久免费观看 | 久久综合精品国产一区二区三区| 久久综合图片| 国产精品日韩电影| 中文精品一区二区三区| 欧美成人午夜剧场免费观看| 国模私拍一区二区三区| 国产日韩欧美日韩| 在线一区视频| 欧美日韩美女| 亚洲精品你懂的| 麻豆精品视频在线观看视频| 欧美日韩免费观看一区二区三区 | 在线亚洲观看| 久久久777| 欧美日韩一区二区三区| 亚洲青涩在线| 猛干欧美女孩| 亚洲欧洲日产国产网站| 午夜亚洲影视| 国产精品视频自拍| 韩国精品久久久999| 亚洲尤物影院| 国产欧美日韩综合精品二区| 1000部国产精品成人观看| 欧美在线黄色| 黑人巨大精品欧美一区二区小视频| 欧美在线视频在线播放完整版免费观看 | 国产一区欧美日韩| 久久国产精品免费一区| 激情国产一区| 欧美精品免费播放| 一区电影在线观看| 国产精品入口| 中文一区二区| 亚洲国产成人久久综合一区| 欧美日韩国产不卡| 亚洲一区精品在线| 国产日韩精品一区观看| 久久er精品视频| 欧美一区91| 美女免费视频一区| 欧美激情综合色综合啪啪| 欧美午夜一区二区福利视频| 欧美午夜精品电影| 国产精品久久久久久久久免费樱桃 | 国内精品嫩模av私拍在线观看| 国产精品老牛| 欧美极品影院| 一本大道av伊人久久综合| 亚洲一二区在线| 久久不射中文字幕| 每日更新成人在线视频| 欧美日产国产成人免费图片| 欧美日韩一区成人| 国产欧美日韩视频一区二区| 国产一区日韩欧美| 在线免费高清一区二区三区| 亚洲国产精品久久久久婷婷老年|