国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > HTML > 正文

html5之Canvas路徑繪圖、坐標變換應用實例

2024-08-26 00:16:15
字體:
來源:轉載
供稿:網友

點評:本文寫一個html5的時鐘應用程序試手主要設置了坐標變換的平移(translate)和旋轉變換(ratate),以及html5 Canvas的路徑繪圖,beginPath,closePath,rect,arc等多的也不說了,直接上代碼有需要的朋友可以參考下

在上一篇中我們了解html5的Canvas ,在這一篇中不用多說,寫一個html5的時鐘應用程序試手。在這里主要設置了坐標變換的平移(translate)和旋轉變換(ratate),以及html5 Canvas的路徑繪圖,beginPath,closePath,rect,arc等,還有就是html5 Canvas路徑繪圖重要的繪圖狀態的保存和恢復機制,save,restore。
多的也不說了,直接上代碼,有不解的歡迎提問,以及對我的建議指教都可以。
ff下效果圖:

html5之Canvas路徑繪圖、坐標變換應用實例

 
代碼:

復制代碼

代碼如下:


<html>
<head>
</head>
<body>
<canvas>你的瀏覽器還不支持哦</canvas>
<script type="text/javascript">
var c = document.getElementById("myCanvas");
var cxt = c.getContext("2d");
var slen = 60;
var mlen = 50;
var hlen = 40;
cxt.strokeRect(0, 0, c.width, c.height);
cxt.beginPath();
cxt.strokeStyle = "#00f";
cxt.fillStyle = "#00f";
cxt.arc(200, 150, 5, 0, 2 * Math.PI, true);
cxt.fill();
cxt.closePath();
cxt.beginPath();
cxt.strokeStyle = "#00f";
cxt.arc(200, 150, 100, 0, 2 * Math.PI, true);
cxt.stroke();
cxt.closePath();
cxt.beginPath();
cxt.translate(200, 150); //平移原點;
cxt.rotate(-Math.PI / 2);
cxt.save();
for (var i = 0; i < 60; i++) {
if (i % 5 == 0) {
// cxt.fillStyle = "#ff0000";
cxt.fillRect(80, 0, 20, 5);
cxt.fillText("" + (i / 5 == 0 ? 12 : i / 5), 70, 0);
} else {
// cxt.strokeStyle = "#00f";
cxt.fillRect(90, 0, 10, 2);
}
//document.getElementById("div1").innerText += " " + i;
cxt.rotate(Math.PI / 30);
}
cxt.closePath();
var ls = 0, lm = 0, lh = 0;
function Refresh() {
cxt.restore();
cxt.save();
cxt.rotate(ls * Math.PI / 30);
cxt.clearRect(5, -1, slen+1, 2+2);
cxt.restore(); cxt.save();
cxt.rotate(lm * Math.PI / 30);
cxt.clearRect(5, -1, mlen+1, 3+2);
cxt.restore(); cxt.save();
cxt.rotate(lh * Math.PI / 6);
cxt.clearRect(5, -3, hlen+1, 4+2);
var time = new Date();
var s = ls=time.getSeconds();
var m = lm=time.getMinutes();
var h = lh=time.getHours();
cxt.restore();
cxt.save();
cxt.rotate(s * Math.PI / 30);
cxt.fillRect(5, 0, slen, 2);
cxt.restore(); cxt.save();
cxt.rotate(m * Math.PI / 30);
cxt.fillRect(5, 0, mlen, 3);
cxt.restore(); cxt.save();
cxt.rotate(h * Math.PI / 6);
cxt.fillRect(5, -2, hlen, 4);
}
var MyInterval = setInterval("Refresh();", 1000);
</script>
<div></div>
</body>
</html>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 米林县| 温泉县| 常德市| 天津市| 介休市| 溧阳市| 乌拉特前旗| 贵港市| 清涧县| 安西县| 武乡县| 山西省| 蓬安县| 华容县| 江北区| 驻马店市| 安义县| 晋江市| 承德县| 玛纳斯县| 黔江区| 鄂托克旗| 兴城市| 仙游县| 山西省| 安远县| 临湘市| 漠河县| 肃北| 宝应县| 渝中区| 岗巴县| 房山区| 青冈县| 绥宁县| 东乌珠穆沁旗| 乌鲁木齐市| 井陉县| 仁布县| 许昌市| 城步|