久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

網(wǎng)頁|HTML5 也可以畫一畫(canvas)

 算法與編程之美 2020-08-08

1.引言

在日常生活中總喜歡涂涂畫畫寫寫,,這樣可以使表達更加直觀,,記錄的也更加詳細,而在HTML5中同樣可以畫一畫,。canvas意為畫布,,現(xiàn)實生活中用它來作畫,在HTML5中的canvas與之類似,,可以稱它為“網(wǎng)頁中的畫布”,,有了這個畫布便可以輕松的在網(wǎng)頁中繪制圖形、文字,、圖片等,。

2.初識畫布

HTML5 <canvas>元素用于圖形的繪制,,通過腳本 (通常是JavaScript)來完成。因為<canvas> 標簽只是圖形容器,,所以必須使用腳本來繪制圖形,。

(1)創(chuàng)建一個畫布

HTML5中提供了<canvas>標簽,,使用<canvas>標簽可以在網(wǎng)頁中創(chuàng)建一個矩形區(qū)域的畫布,。但值得注意的是在默認情況下 <canvas> 元素沒有邊框和內(nèi)容。

<canvas id="cavsElem"  width="400" height="300">

             您的瀏覽器不支持canvas

</canvas>

畫布本身不具有繪制功能,,可以通過腳本語言(一般為JavaScript)操作繪制圖形的API進行繪制操作,。可以使用getElementById()方法獲取畫布,。

var canvas =  document.getElementById('cavsElem');

(2)準備畫筆

當準備好畫畫的紙之后應該去準備畫筆,。這里的畫筆其實就是context對象,該對象可以使用JavaScript腳本獲得,。

var context = canvas.getContext('2d');

(3)坐標和起點

準備工作完成,,接下來就該考慮從哪里開始畫畫了。在canvas圖形繪制中,,不能像日常生活中,,提筆想在哪里畫就在哪里畫,在這里需要用到坐標來實現(xiàn),。

圖1 坐標軸示例圖

context.moveTo(x,y);

(4)繪制線條

接下來終于可以開始畫畫了,。在canvas圖形繪制中,首先需要畫出線條,。lineTo()方法用于定義從“x,y”的位置繪制一條直線到起點或上一個線頭點,。

context.lineTo(x,y);

(5)路徑

繪制直線確定了起始點和線頭點后,便形成了一條繪制路徑,,但如果要繪制復雜路徑,,就必須要有路徑的開始和結(jié)束。

context.beginPath(); /*開始路徑*/  

context.closePath(); /*閉合路徑*/

(6)描邊和填充

完成了畫的線條輪廓的草稿,,接下來就是準備上色,。在canvas圖形繪制中,路徑只是草稿,,真正繪制線必須執(zhí)行stroke()方法根據(jù)路徑進行描邊和使用fill()方法進行圖形的填充,。

context.stroke();//描邊     

context.fill();//填充

3.畫布實例

(1)Canvas-文本

使用 canvas 繪制文本,首先要用font來定義字體,,然后通過使用fillText(text,x,y)來定義在 canvas 上繪制實心的文本,,或者使用strokeText(text,x,y) 來定義在 canvas上繪制空心的文本。

示例:

<!DOCTYPE html>

<html>

     <head> 

         <meta charset="utf-8"> 

         <meta charset="utf-8" />

         <title>空心文本</title> 

     </head>

     <body>

         <canvas id="myCanvas" width="300"  height="100" style="border:1px solid #d3d3d3;">

                您的瀏覽器不支持 HTML5 canvas 標簽,。

         </canvas>

         <script>

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

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

                ctx.font="30px  Arial";

                ctx.strokeText("我是個空心的文本哦,!",10,50);

         </script>

     </body>

</html>

效果圖:

圖2 空心文本效果圖

(2)Canvas - 形狀

繪制圓形示例:

<!DOCTYPE html>

<html>

<head>

     <meta charset="UTF-8">

     <title>圓形</title>

     <style type="text/css">

         canvas{border:1px solid;}

     </style>

</head>

<body>

     <canvas id="myCanvas"   width="200px" height="200px">

         瀏覽器不支持canvas元素時顯示該文本內(nèi)容

     </canvas>

     <script type="text/javascript">

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

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

         //fillStyle屬性用于指定繪制圖形的填充顏色

         context.fillStyle="palegreen";

         //beginPath()方法用于開始繪制路徑

         context.beginPath();

         //arc()方法參數(shù):arc(x,y,radius,startAngle,endAngle,counterclockwise)

         //參數(shù)x,,y為起點位置,radius為圓形的半徑,,startAngle為開始角度,,endAngle為結(jié)束角度

         //counterclockwise(可選)(逆時針的)這個參數(shù)傳布爾值,flase表示順時針,,true表示逆時針

         context.arc(100,100,50,0,2*Math.PI,false);

         //closePath()方法用于將圖形閉合起來

         context.closePath();

         //fill()方法將圖形填充

         context.fill();

     </script>

</body>

</html>

運行效果:

圖3 圓形效果圖

繪制三角形示例:

<html>

<head>

     <meta charset="UTF-8">

     <title>三角形</title>

     <style type="text/css">

         canvas{border:1px solid;}

     </style>

</head>

<body>

     <canvas id="myCanvas"   width="200px" height="200px">

         瀏覽器不支持canvas元素時顯示該文本內(nèi)容

     </canvas>

     <script type="text/javascript">

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

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

         context.fillStyle="greenyellow";

         context.beginPath();

         context.moveTo(25,25);

         context.lineTo(150,25);

         context.lineTo(25,150);

         context.fill();

     </script>

</body>

</html>

運行效果:

圖4 三角形效果圖

繪制笑臉示例:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>三角形</title>

</head>

<body onload="draw();">

     <canvas id="canvas" width="150" height="150"></canvas>

     <script>

         function draw() {

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

            if (canvas.getContext) {

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

                context.beginPath();

                context.arc(75, 75, 50, 0,  Math.PI * 2, true); // 繪制

                context.moveTo(110, 75);

               context.arc(75, 75, 35, 0,  Math.PI, false);   // 嘴巴(順時針)

               context.moveTo(65, 65);

                ctx.arc(60, 65, 5, 0, Math.PI  * 2, true);  // 左眼

                context.moveTo(95, 65);

                ctx.arc(90, 65, 5, 0, Math.PI  * 2, true);  // 右眼

                context.stroke();

            }

         }

     </script>

</body>

</html>

運行效果:

圖5 笑臉效果圖

4.總結(jié)

通過使用canvas畫布再規(guī)定畫筆的起點,、去向、描邊,、填充等,,可以根據(jù)自己的設想畫出2d的圖形。這種方法看似簡單,,但也要思考好畫筆的每一步,,這樣才能讓畫的圖沒有偏差,因為需要計算畫筆的每一步的走向,,所以使用canvas畫布畫圖看似簡單,,其實也需要思維清晰哦。


END

編  輯   |   王楠嵐

責  編   |   楊金月

 where2go 團隊


微信號:算法與編程之美          

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多