日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用canvas画出满天繁星

發布時間:2024/1/8 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用canvas画出满天繁星 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天學習了h5中的canvas標簽,結合之前學習的畫星星的算法,畫出了滿天繁星的效果圖

下面是展示:



做這個比較難的是畫星星的算法,下面是幫助大家理解一個圖:


只需要找到上面的十個點(5個小圓的點和5個大圓的點)之間的規律,使用ctx.lineTo依次連接就OK了。

大圓和小圓的5個點之間的度數都相差72度。

cos和sin的值可以用Math.cos()和Math.sin()計算


然后下面是具體的代碼示例:

demo.html

<!DOCTYPE html> <html> <head lang="en"><meta charset="utf-8"><title></title> </head> <body><canvas id="canvas" style="border:1px solid #aaa;margin: 50px auto;display:block;"></canvas> <script type="text/javascript" src="star.js"></script> </body> </html>


star.js

// 畫星空 window.onload = function() {// 找到畫布var canvas = document.getElementById("canvas");// 定義畫布的長寬canvas.width = 1000;canvas.height = 800;// 上下文,用于繪制var context = canvas.getContext("2d");/*** [skyStyle description]* @type {[type]}* createRadialGradient是徑向漸變填充函數*createRadialGradient的參數*從左至右依次為:* x0,y0,r0:起點的位置(相對canvas畫布)和小圓的半徑* x1,y1,r1:擴散至的終點的位置和大圓的半徑*/var skyStyle = context.createRadialGradient(canvas.width/2,canvas.height,0,canvas.width/2,canvas.height,canvas.height);//添加顏色skyStyle.addColorStop(0.0,'#035');skyStyle.addColorStop(1.0,'black');//將skyStyle用于填充展示天空的背景色context.fillStyle = skyStyle;//繪制矩形背景context.fillRect(0,0,canvas.width,canvas.height);for (var i = 0; i < 200; i++) {var r = Math.random() * 5 + 5;var x = Math.random()*canvas.width;// 讓星星都在canvas畫布的上面65%的區域顯示var y = Math.random()*canvas.height*0.65;var a = Math.random()*360;drawStar(context, x, y, r, a);}};// 繪制五角星 // 改善后的drawStar使用了漸變色radialGrad(徑向漸變)讓天空的顏色更加逼真 /*** [drawStar description]* @param {[type]} cxt [description] 繪制的上下文環境* @param {[type]} r [description] 五角星內部小圓的半徑* @param {[type]} R [description] 五角星外部大圓的半徑* @param {[type]} x [description] 五角星在水平方向上的位移* @param {[type]} y [description] 五角星在豎直方向上的位移* @param {[type]} rot [description] 五角星的旋轉角度* @return {[type]} [description]*/ function drawStar(ctx, x, y, R, rot) {ctx.save();//與restore()一起出現,防止狀態影響其他的繪制//圖形變換ctx.translate(x,y);//偏移ctx.rotate(rot/180*Math.PI);//旋轉ctx.scale(R,R);//縮放比例startPath(ctx);//開始繪制ctx.fillStyle = "#fb3";//內部填充的顏色ctx.fill();//內部填充顏色ctx.restore();}/*** [startPath description]畫星星的具體算法* @param {[type]} ctx [description]* @return {[type]} [description]*/ function startPath (ctx) {ctx.beginPath();for( var i = 0; i < 5; i++) {ctx.lineTo(Math.cos((18 + i*72)/180*Math.PI),-Math.sin((18 + i*72)/180*Math.PI));ctx.lineTo(Math.cos((54 + i*72)/180*Math.PI) * 0.5,-Math.sin((54 + i*72)/180*Math.PI) * 0.5);}ctx.closePath(); }


總結

以上是生活随笔為你收集整理的使用canvas画出满天繁星的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产又粗又猛又黄又爽无遮挡 | 国偷自产av一区二区三区 | 精品成人一区二区三区 | 国产内射一区二区 | 欧美一区网站 | 超碰人人在线观看 | 捆绑无遮挡打光屁股 | 里番acg★同人里番本子大全 | 萌白酱在线观看 | 国产精品久久久久久av | 91成人免费观看 | 色妹子综合 | 亚洲国产高清在线 | 蜜桃99视频一区二区三区 | 蜜桃成人免费视频 | 欧美日韩成人在线观看 | 欧洲精品免费一区二区三区 | 98精品国产| 极品色av影院 | 中文字幕在线2018 | 极品91 | 波多野结衣www | 高清乱码免费 | 成人爱爱视频 | 日韩中文字幕一区二区三区 | 国产视频精选 | 久久艹在线 | 日本xxxx高潮少妇 | 久久免费国产 | 黑人与日本少妇高潮 | 伊人久久国产精品 | 浪浪视频在线观看 | 99热国产在线观看 | 91草视频 | 麻豆av在线免费观看 | 波多野结衣视频免费观看 | 亚洲黄在线 | 波多野结衣在线视频免费观看 | 日韩免费在线视频 | 欧美激情爱爱 | 欧美特级黄色大片 | 91天堂素人 | 欧美日韩在线视频播放 | 国产网红在线观看 | 91大神视频在线播放 | 久久人妻少妇嫩草av无码专区 | av最新天堂| 97人妻精品一区二区三区软件 | 婷婷色中文字幕 | 欧美成年人视频在线观看 | 国产欧美激情视频 | 麻豆视频网页 | 国产又粗又猛又爽又黄无遮挡 | 国产精品999. | 丁香激情视频 | av日韩一区二区三区 | 天天做天天干 | av黄网站 | 国产精品伦一区二区三级古装电影 | 亚洲天堂一 | 黑人精品无码一区二区三区AV | 国产乱强伦一区二区三区 | 久久精品视频免费播放 | 好男人.www | 国产午夜精品福利视频 | 99精品视频免费看 | 免费大片在线观看www | 中文字幕人妻丝袜乱一区三区 | 久久久久久黄色 | 久久大胆视频 | 97天天操| 久久美女免费视频 | 四虎福利 | 国产亚洲欧美视频 | 精品国产乱码一区二区三 | 国产福利在线免费观看 | 日本69av | 奇米影视四色777 | 女人高潮娇喘1分47秒 | 久操热| 日批视频在线 | 青青青免费视频观看在线 | 免费一二三区 | 久久久一二三四 | 66精品 | 国产十八熟妇av成人一区 | 无码人妻aⅴ一区二区三区玉蒲团 | 亚洲字幕av一区二区三区四区 | 福利精品在线 | 国产手机看片 | 爱爱爱爱网 | 公侵犯人妻一区二区 | 激情五月综合网 | 欧美大片视频在线观看 | 香蕉国产 | 亚洲视频 中文字幕 | 亚洲av电影一区 | 日本少妇毛茸茸 | 国产在线观看免费 |