婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > HTML5 Canvas 旋轉風車繪制

HTML5 Canvas 旋轉風車繪制

熱門標簽:聯通400電話申請 電視購物電銷外呼系統 西寧智能外呼系統加盟 杭州營銷電銷機器人供應商 飛亞外呼系統 電話機器人如何 貸款電銷人工和機器人哪個好 高德地圖標注賓館位置 百應電銷機器人產業

寫在前面:

親愛的朋友們大家好,鄙人自學前端,第一次寫博客,寫的不好的地方,煩請同學們諒解.

在進行教學之前,我想聰明的你已經掌握了基本的Canvas基本操作方法,如果對Canvas還不是很了解,那么我建議你去http://www.w3school.com.cn/tags/html_ref_canvas.asp這里先熟悉一下;

okey!下圖即是我們完成后的簡單效果,心動不如行動,那么咱們就進行簡單繪制吧!    

1、定義畫布

首先我們現在html文件里面插入<canvas>標簽,定義畫布的尺寸,我這里定義畫布的尺寸為800*600像素。同時在內部樣式表里面設置canvas的背景色(方便畫圖時觀看);

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        body{
            padding: 0;
            margin: 0;
        }
        #canvas {
            background:#5151a2;
        }
    </style>
</head>
<body>
    <canvas id="canvas" width="800" height="600"></canvas>
</body>
</html> 

接下來的核心就是在原生JS環境下,繪制風車;通過JS DOM操作方法獲取到canvas元素對象,并通過getContex("2d")獲取2D繪圖上下文,通過這個方法就像是要告訴瀏覽器“我們要在這個畫布上繪制2d圖形”;

<script type="text/javascript">

    //獲取畫布的2d上下文
    var ctx = document.getElementById("canvas").getContext("2d");

2、繪制風車底座

風車的底座的幾何圖形看似就像一個細長細長的梯形,我們可以畫出一個梯形出來,然后填充顏色,這里為了達到相對較好的效果,使用了顏色漸變填充的方法;okey!直接看代碼吧~~!

 

    //定義一個函數 ,封裝風車的底部基座
    function buttom(){
        ctx.beginPath();                                        //開始一條新的繪制路徑
        var liner = ctx.createLinearGradient(390,600,410,600);    //設置變量(顏色漸變的方向-起點-終點)
        liner.addColorStop(0,"#ccc");                            //設置起點顏色
        liner.addColorStop(0.5,"#fff");                            //設置中點顏色
        liner.addColorStop(1,"#ccc");                            //設置終點顏色
        ctx.fillStyle = liner;                                    //梯形的填充方式設置為 變量(漸變顏色)    
        ctx.moveTo(395,300);                                    //提起我們的畫筆,起點設置為(395,300)
        ctx.lineTo(405,300);                                    //連接起點畫線
        ctx.lineTo(410,600);
        ctx.lineTo(390,600);                                    
        ctx.closePath();                                        //閉合路徑
        ctx.fill();                                                //填充梯形
        
    }
  buttom();                              //要調用函數,才能在瀏覽器顯示

我們來看一下頁面中的效果,是不是很簡單?

(我感覺我話有點多哦~!~!)

3、繪制葉子

接下來的部分將是這個動畫中最關鍵的地方,首先我們分析一下葉子的結構,三片葉子夾角為120°,而且每片葉子的形狀是相同的;他們有一個圓心,你心中或許也有疑問,先畫圓心還是先畫葉子?葉子的形狀應該怎么畫呢?葉子可不可復制粘貼呢?答案當然是可以的,Let's do it! 

思路分析:

1)、由于3片葉子的形狀是一模一樣,我們只需要畫出一片葉子,第二第三片葉子直接copy就行了,聰明的我們是不是應該給這個葉子的畫法封裝一個函數呀?就叫它bind(  )函數吧?。∶看握{用它就可以了!哎!你們TM太機智了

2)、三片葉子有一個圓心,繪制葉子的時候為了方便取坐標值,我們將圓心從畫圖的左上角移動梯形頂部,這樣我們繪制葉子會方便很多!這里使用了translate()方法,移動坐標系!

3)、最難的一點就是理解這里動畫是怎么實現的,因為動畫原理會影響到我們畫葉子的文檔結構:

首先我們先新建一個繪圖環境,我們稱它為環境1,我們在環境1上畫完第一片葉子;然后在   第一個繪圖環境前提下  旋轉120°新建第一個繪圖環境2,再此基礎上調用畫葉子的函數bind(  ),繪制二片葉子;第三片葉子的繪制方法如法炮制,在環境2的基礎上旋轉120°,新建環境3,調用繪制葉子函數bind(  )畫第三片葉子;

如果要實現動畫,我們只需要旋轉第一片葉子的繪圖環境1,第二片葉子和第三片葉子都是參照環境1為基準畫出來的,是不是也跟著動起來了呢??        彈幕:666666

4)、最后就是一些基本的外觀樣式調試的啦!比如顏色漸變啊,透明度啊,之類的!

繪制葉子

畫這個葉子形狀的時候我是慢慢調試的,我的審美相當low,原諒我只能畫出這樣的葉子,當然想象力豐富的同學可以根據自己喜好來繪制,不過大體思路是一致的;

這里我聲明了一個變量 var num = 0;,作為環境1旋轉度數變化的一個參數:  那么咱就直接看代碼吧!??!

 

var num =0;
function yezi(){
        ctx.save();  //保存默認情況下的canvas變換狀態
        ctx.beginPath();
        ctx.translate(400,300);
        // ctx.globalAlpha = 0.9;
        // 設置第一次狀態下 坐標系旋轉度數
        ctx.rotate((Math.PI/180)*num);
        var liner1 = ctx.createLinearGradient(30,-12,30,12);      //這里設置顏色漸變填充的樣式
            liner1.addColorStop(0,"#ccc");
            liner1.addColorStop(0.5,"#fff");
            liner1.addColorStop(1,"#ccc");
            ctx.fillStyle = liner1;
        ctx.save();                 //保存第一次狀態  平移坐標系變換
            ctx.beginPath();
            bind();                //調用函數

            //繪制第二片葉子
            ctx.beginPath();
            ctx.rotate((Math.PI/180)*120);   //坐標系旋轉120°
            ctx.save();                        //保存旋轉坐標系狀態,為第三片葉子做鋪墊
                bind();            //調用函數
                //繪制第三片葉子
                ctx.beginPath();
                ctx.rotate((Math.PI/180)*120);   //坐標系旋轉120°
                ctx.save();    
                    bind();     //調用函數
                ctx.restore();    //回復第3次狀態前(旋轉坐標系)
            ctx.restore();        //回復第2次狀態前(旋轉坐標系)

            //繪制葉子中心圓圈
            ctx.beginPath();
            var arcgradient = ctx.createRadialGradient(0,0,0,0,0,16);
            arcgradient.addColorStop(0,"#ccc");
            arcgradient.addColorStop(0.1,"#fff");
            arcgradient.addColorStop(1,"#ccc");
            ctx.arc(0,0,10,0,Math.PI*2);
            ctx.fillStyle  = arcgradient;
            ctx.fill();

        ctx.restore();             //回復第1次狀態前(平移坐標系)

        num+=5;   //第一狀下  環境1   態坐標系旋轉度數增加********************************這個num使得環境1的旋轉角度在不停的變化,**********************************************
        ctx.restore();

    }

    //繪制每片葉子都重復的代碼,這里做一個函數包裝
    function bind(){
        ctx.moveTo(0,0);                    
        ctx.quadraticCurveTo(10,-12,30,-12);    //比賽爾曲線
        ctx.lineTo(190,-3);
        ctx.quadraticCurveTo(200,0,190,3);    
        ctx.lineTo(30,12);
        ctx.moveTo(0,0);
        ctx.quadraticCurveTo(10,12,30,12);
        ctx.fill();
    }

4、設置動畫

動畫這部分就比較簡單了,設置定時器,清除畫布,調用函數;大功告成,打完收工?。?!

 

setInterval(function(){
        ctx.clearRect(0,0,800,600);    //每次執行代碼前,都要將畫布清空,不然畫出的圖形會滯留在畫布上;
        buttom();               //調用函數 
        yezi();
    },50);

源碼:https://github.com/224137748/Canvas/blob/master/windmill.html

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:煙臺 牡丹江 邯鄲 晉中 安慶 內蒙古 玉溪 撫州

巨人網絡通訊聲明:本文標題《HTML5 Canvas 旋轉風車繪制》,本文關鍵詞  HTML5,Canvas,旋轉,風車,繪制,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《HTML5 Canvas 旋轉風車繪制》相關的同類信息!
  • 本頁收集關于HTML5 Canvas 旋轉風車繪制的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    激情五月婷婷综合网| 欧美亚日韩国产aⅴ精品中极品| 亚洲欧美偷拍卡通变态| 精品国精品国产| 精品成人佐山爱一区二区| 精品理论电影在线观看| 日韩免费福利电影在线观看| 精品久久久久久久久久久久包黑料| 欧美一区二区三区啪啪| 91精品国产综合久久久久久| 日韩午夜三级在线| 国产午夜精品美女毛片视频| 国产欧美一区二区精品性| 日本一区二区三区久久久久久久久不 | 亚洲精品一区二区三区在线观看 | 欧美人与z0zoxxxx视频| 欧美日韩精品专区| 日韩三级视频在线看| 欧美精品一区二区精品网| 日本一区二区成人在线| 亚洲私人黄色宅男| 日韩国产在线一| 奇米影视在线99精品| 国产精品综合一区二区三区| va亚洲va日韩不卡在线观看| 欧美色图一区二区三区| 久久久噜噜噜久久中文字幕色伊伊| 国产欧美日韩亚州综合| 夜夜嗨av一区二区三区四季av| 青青草原综合久久大伊人精品优势 | 精品伊人久久久久7777人| 丁香一区二区三区| 欧美性大战久久久| 久久久久久免费网| 丝袜美腿亚洲综合| 成人av在线观| 欧美大尺度电影在线| 亚洲桃色在线一区| 久久机这里只有精品| 一本大道久久a久久综合婷婷| 欧美一区日韩一区| 亚洲精品日韩综合观看成人91| 精品一区二区三区在线视频| 色先锋aa成人| 日本一区二区久久| 狠狠久久亚洲欧美| 欧美亚洲禁片免费| 一区二区中文字幕在线| 久久99日本精品| 欧美二区三区的天堂| 亚洲蜜臀av乱码久久精品蜜桃| 国产精品一品视频| 亚洲精品在线三区| 偷拍日韩校园综合在线| 在线观看视频一区二区| 亚洲欧美一区二区视频| 国产xxx精品视频大全| 亚洲精品在线一区二区| 久久99精品一区二区三区三区| 欧美日本在线看| 亚洲第一主播视频| 欧美亚洲综合久久| 亚洲国产乱码最新视频| 91久久人澡人人添人人爽欧美 | 欧美变态tickling挠脚心| 亚洲国产欧美在线| 欧美色手机在线观看| 亚洲电影欧美电影有声小说| 欧美性生活久久| 亚洲综合在线电影| 在线观看日韩av先锋影音电影院| 中文字幕亚洲区| 99久久精品99国产精品| 亚洲日本乱码在线观看| 91美女片黄在线观看91美女| 亚洲伦理在线精品| 91久久精品一区二区三| 亚洲成人福利片| 欧美一区三区四区| 精品无码三级在线观看视频| 久久综合久久久久88| 国产精品一级片在线观看| 国产精品视频观看| 色哟哟日韩精品| 午夜久久久久久久久久一区二区| 91精品国产综合久久久久久| 美国精品在线观看| 国产欧美日韩亚州综合| 97se亚洲国产综合自在线不卡| 亚洲自拍偷拍图区| 欧美男男青年gay1069videost | 成人av手机在线观看| 亚洲欧美一区二区视频| 欧美三区在线观看| 久久av老司机精品网站导航| 国产精品乱人伦| 欧美色网一区二区| 久久99蜜桃精品| 亚洲视频在线观看一区| 欧美精品一卡二卡| 国产一区二区在线观看视频| 亚洲免费观看高清| 欧美大片日本大片免费观看| eeuss鲁一区二区三区| 亚洲第一福利一区| 国产日韩在线不卡| 欧美日韩精品一区视频| www.亚洲精品| 琪琪一区二区三区| 亚洲另类在线视频| 精品99一区二区| 在线观看一区日韩| 国产成a人亚洲| 亚洲福利视频三区| 国产精品色呦呦| 欧美成人一区二区三区在线观看| 91麻豆视频网站| 国产精品18久久久久久久久| 无吗不卡中文字幕| 亚洲视频每日更新| 久久精品在这里| 欧美成人高清电影在线| 欧美伊人久久久久久久久影院 | 亚洲综合精品久久| 国产欧美久久久精品影院| 91精品国产色综合久久不卡电影 | 欧美性受xxxx黑人xyx| 国产91丝袜在线观看| 免费国产亚洲视频| 亚洲一区二区综合| 一区二区三区在线免费视频| 国产精品欧美一级免费| 久久久蜜臀国产一区二区| 91精品国产综合久久精品性色| 在线观看视频91| 欧美中文字幕亚洲一区二区va在线| 成人午夜av电影| 国产 欧美在线| 国产91精品免费| 国产成人午夜片在线观看高清观看| 精品一区二区三区在线播放视频| 日本不卡一区二区三区| 婷婷一区二区三区| 婷婷成人激情在线网| 婷婷成人激情在线网| 亚洲第一综合色| 日韩二区三区四区| 日韩av在线免费观看不卡| 午夜成人免费视频| 奇米影视一区二区三区小说| 男男成人高潮片免费网站| 日韩激情视频网站| 久久国内精品视频| 国产一区在线看| 国产jizzjizz一区二区| 成人av午夜影院| 欧美在线影院一区二区| 91麻豆精品国产综合久久久久久| 51久久夜色精品国产麻豆| 日韩欧美亚洲另类制服综合在线| 精品少妇一区二区三区免费观看| 久久精品人人做| 中文字幕欧美三区| 一区二区三区视频在线看| 三级精品在线观看| 国产在线精品免费| 色激情天天射综合网| 欧美人与z0zoxxxx视频| 久久综合久久综合久久综合| 中文字幕亚洲不卡| 亚洲一区二区三区视频在线| 美女国产一区二区| av一本久道久久综合久久鬼色| 在线影视一区二区三区| 555www色欧美视频| 国产精品你懂的在线欣赏| 亚洲精品国产无套在线观 | 久久在线观看免费| 亚洲乱码中文字幕| 久久精品国产**网站演员| 北岛玲一区二区三区四区| 8x福利精品第一导航| 国产精品女上位| 日韩精品国产精品| a美女胸又www黄视频久久| 欧美顶级少妇做爰| 综合久久久久综合| 国内精品写真在线观看| 在线观看视频一区二区欧美日韩| 欧美不卡在线视频| 亚洲国产日韩在线一区模特| 国产91在线观看丝袜| 日韩欧美国产系列| 亚洲女同一区二区| 国产美女在线精品| 7777精品伊人久久久大香线蕉 | 播五月开心婷婷综合| 日韩欧美中文字幕精品| 一区二区在线观看视频| 成人激情av网|