整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          怎么入門html5繪制圖形?你需要了解這幾點!

          tml5中是怎么實現繪制圖形?

          html5中可以實現繪畫圖形的功能,需要注意的是html5只提供2D,不提供3D繪畫功能。canvas元素是H5總新增的元素,它用來專門繪制圖形。你也可以把canvas元素理解成一塊“畫布”,我們可以在其中繪制圖形。在canvas元素中繪畫不是拿鼠標來繪制圖形,實際上在H5完成繪畫功能,不僅僅需要canvas元素,而且需要JavaScript腳本來配合才能完成繪制圖形。所以說把html5中的canvas元素理解成畫布是是合適不過的。

          html5中的canvas元素

          canvas元素必須要指定id、width(寬)、height(高)屬性,雖然canvas元素是H5中用來繪制的圖形,但是它的放置放和其他的元素沒有區別。比如說canvas id="myCanvas" width="200" height="100"是放置了一個200*100的canvas元素。

          html5中的常用的繪制圖形

          繪制矩形

          創建canvas元素→取得上下文(使用canvas對象的getcontent方法獲得上下文)→填充繪制邊框→設定樣式→指定線寬、顏色。代碼如下圖:

          可以用clearRect方法擦除指定區域的圖形,使矩形區域顏色變透明context.clearRect(x,y,width,height)。

          繪制圓形

          繪制圓形要比矩形復雜一點,需要使用到路徑,創建圖形路徑→關閉路徑→調用繪制方法、路徑。代碼如下:

          cxt.beginPath();是開始創建路徑,有幾次是循環創建路徑,每次開始都需要調用beginPath()函數。

          cxt.arc(70,18,15,0,Math.PI*2,true);是是創建路徑,使用了arc()方法,它的語法如下:

          cxt.closePath();cxt.fill();關閉繪畫路徑后調用繪制路徑。最后給大家一個作業,你可以試試下面的代碼在瀏覽器執行后會是什么圖形?

          關于“html5中繪制圖形”先聊到這。每天學習一個知識點,每日寄語”人生之苦,苦在選擇,人生之難,難在放棄”如轉載清標明出處。

          紹HTML5中的一個新增元素——canvas元素以及伴隨這個元素而來的一套編程接口——canvas API。

          使用canvas API可以在頁面上繪制出任何你想要的、非常漂亮的圖形與圖像,創造出更加豐富多彩、賞心悅目的Web頁面。

          通過閱讀,您可以:

           掌握canvas元素的基本概念

           學會如何在頁面上放置一個canvas元素

           學會如何使用canvas元素繪制出一個簡單矩形

           掌握使用路徑的方法,能夠利用路徑繪制出圓形與多邊形

           掌握漸變圖形的繪制方法,學會圖形變形、圖形縮放、圖形組合以及給圖形繪制陰影的方法

           掌握在canvas畫布中使用圖像的方法

           掌握如何在畫布中繪制文字,給文字加上邊框的方法

           掌握如何保存及恢復繪圖狀態

          canvas的基礎知識

          HTML5中的canvas有很多功能,這里只介紹HTML5中canvas的一些基礎知識,

          并展示一些可以使用畫布元素實現的實用的內容,例如處理來自畫布中的一幅圖像的單個像素。

           canvas的由來

          canvas的概念最初是由蘋果公司提出的,

          用于在Mac OS X WebKit中創建控制板部件(Dashboard Widget)。

          在canvas出現之前,開發人員若要在瀏覽器中使用繪圖API,

          只能使用Adobe的Flash和SVG(可伸縮矢量圖形)插件,或者只有IE才支持的VML(矢量標記語言),

          以及JavaScript中的一些技術。假設我們要在沒有canvas元素的條件下繪制一條對角線,

          此時如果沒有一套二維繪圖API的話,這會是一項相當復雜的工作。

          HTML5中的canvas就能夠提供這樣的功能,對瀏覽器端來說這個功能非常有用,

          因此canvas被納入了HTML5規范。

          最靠譜的WEB前端教程——整整140集,全程干貨無廢話,學完變大佬!

          碼:

          <!DOCTYPE html>

          <html>

          <head>

          <meta charset=”gbk”>

          <title>中國標準國旗</title>

          </head>

          <body>

          <canvas id=”canvas” width=”600″ height=”400″></canvas>

          <script>

          /**

          使用HTML5繪制標準五星紅旗

          */

          var canvas = document.getElementById(“canvas”);

          var context = canvas.getContext(‘2d’);

          var width=canvas.width;

          var height=width*2/3;

          var w=width/30;//小網格的寬

          context.fillStyle=”red”;

          context.fillRect(0,0,width,height);

          var maxR = 0.15, minR = 0.05;//

          var maxX = 0.25, maxY = 0.25;//大五星的位置

          var minX = [0.50, 0.60, 0.60, 0.50];

          var minY = [0.10, 0.20, 0.35, 0.45];

          // 畫大☆

          var ox = height * maxX, oy = height * maxY;

          create5star(context,ox,oy,height * maxR,”#ff0″,0);//繪制五角星

          // 畫小★

          for (var idx = 0; idx < 4; idx++) {

          var sx = minX[idx] * height, sy = minY[idx] * height;

          var theta = Math.atan((oy – sy)/(ox – sx));

          create5star(context,sx, sy, height * minR, “#ff0”,-Math.PI/2+theta);

          }

          //輔助線

          context.moveTo(0,height/2)

          context.lineTo(width,height/2);

          context.stroke();

          context.moveTo(width/2,0);

          context.lineTo(width/2,height);

          context.stroke();

          //畫網格,豎線

          for(var j=0;j< 15;j++){

          context.moveTo(j*w,0);

          context.lineTo(j*w,height/2);

          context.stroke();

          }

          //畫網格,橫線

          for(var j=0;j< 10;j++){

          context.moveTo(0,j*w);

          context.lineTo(width/2,j*w);

          context.stroke();

          }

          //畫大圓

          context.beginPath();

          context.arc(ox,oy,maxR*height,0,Math.PI*2,false);

          context.closePath();

          context.stroke();

          // 畫小圓

          for (var idx = 0; idx < 4; idx++) {

          context.beginPath();

          var sx = minX[idx] * height, sy = minY[idx] * height;

          context.arc(sx, sy, height * minR,0,Math.PI*2,false);

          context.closePath();

          context.stroke();

          }

          //大圓中心與小圓中心連接線

          for (var idx = 0; idx < 4; idx++) {

          context.moveTo(ox,oy);

          var sx = minX[idx] * height, sy = minY[idx] * height;

          context.lineTo(sx, sy);

          context.stroke();

          }

          //繪制五角星

          /**

          * 創建一個五角星形狀. 該五角星的中心坐標為(sx,sy),中心到頂點的距離為radius,rotate=0時一個頂點在對稱軸上

          * rotate:繞對稱軸旋轉rotate弧度

          */

          function create5star(context,sx,sy,radius,color,rotato){

          context.save();

          context.fillStyle=color;

          context.translate(sx,sy);//移動坐標原點

          context.rotate(Math.PI+rotato);//旋轉

          context.beginPath();//創建路徑

          var x = Math.sin(0);

          var y= Math.cos(0);

          var dig = Math.PI/5 *4;

          for(var i = 0;i< 5;i++){//畫五角星的五條邊

          var x = Math.sin(i*dig);


          主站蜘蛛池模板: 国产拳头交一区二区| 韩国精品一区二区三区无码视频| 日本一区二区在线播放| 中文字幕乱码亚洲精品一区 | 天美传媒一区二区三区| 国产精品一区二区香蕉| 91成人爽a毛片一区二区| 国产av成人一区二区三区| 中文字幕一区二区三区久久网站| 国产成人av一区二区三区在线观看 | 无码人妻久久一区二区三区免费 | 无码精品人妻一区| 天堂一区人妻无码| 亚洲电影国产一区| 亚洲av无码一区二区三区不卡 | 夜夜精品无码一区二区三区| 无码人妻av一区二区三区蜜臀| 国模少妇一区二区三区| 一区二区三区免费视频观看| 日本在线视频一区| 精品一区二区三区高清免费观看| 制服美女视频一区| 国产高清一区二区三区视频| 国产乱码精品一区三上| 亚洲日本一区二区一本一道| 一区二区三区四区视频在线| 精品久久国产一区二区三区香蕉| 精品视频在线观看一区二区三区| 日本一区二区在线免费观看| 亚洲爽爽一区二区三区| 久久综合九九亚洲一区| 国产一区二区内射最近更新| 亚洲狠狠狠一区二区三区| 中文无码一区二区不卡αv| 精品国产日韩亚洲一区91| 一本色道久久综合一区| 精品国产一区二区三区久久蜜臀 | 99精品国产一区二区三区2021| 亚洲一区二区三区精品视频| 国产aⅴ一区二区| 日韩人妻无码一区二区三区久久 |