做者: 糖少css
Canvas是 HTML5 新增的,一個可使用腳本(一般爲JavaScript)在其中繪製圖像的 HTML 元素。它能夠用來製做照片集或者製做簡單(也不是那麼簡單)的動畫,甚至能夠進行實時視頻處理和渲染。 Canvas是由HTML代碼配合高度和寬度屬性而定義出的可繪製區域。JavaScript代碼能夠訪問該區域,相似於其餘通用的二維API,經過一套完整的繪圖函數來動態生成圖形。 Mozilla 程序從 Gecko 1.8 (Firefox 1.5)開始支持Canvas, Internet Explorer 從IE9開始支持。Chrome和Opera 9+ 也支持。html
蘋果內部使用本身MacOS X WebKit推出,供應用程序使用像儀表盤的構件和 Safari 瀏覽器使用。 後來,有人經過Gecko內核的瀏覽器 (尤爲是Mozilla和Firefox),Opera和Chrome和超文本網絡應用技術工做組建議爲下一代的網絡技術使用該元素canvas
fillRect( x , y , width , height) //填充以(x,y)爲起點寬高分別爲width、height的矩形 默認爲黑色
stokeRect( x , y , width , height) //繪製一個空心以(x,y)爲起點寬高分別爲width、height的矩形
clearRect( x, y , width , height ) // 清除以(x,y)爲起點寬高分別爲width、height的矩形 爲透明
複製代碼
beginPath() 新建一條路徑一旦建立成功 繪製命令將轉移到新建的路徑上
moveTo( x, y ) 移動畫筆到(x , y) 點開始後面的繪製工做
closePath() 關閉該路徑 將繪製指令從新轉移到上下文
stroke() 將繪製的路徑進行描邊
fill() 將繪製的封閉區域進行填充
複製代碼
arc( x , y , r , startAngle , endAngle , anticlosewise ) // 以(x,y)爲圓心 r爲半徑的圓 繪製startAngle弧度 到endAngle弧度的圓弧 anticlosewise默認爲false 即順時針方向 true爲逆時針方向
arcTo( x1 , y1 , x2 , y2 , radius ) //根據 兩個控制點 (x1,y1) 和 (x2, y2)以及半徑繪製弧線 同時鏈接兩個控制點
複製代碼
一次貝塞爾曲線實際上是一條直線小程序
二次貝塞爾曲線數組
三次貝塞爾曲線瀏覽器
二次貝塞爾曲線bash
quadraticCurveTo( cp1x, cp1y , x ,y ) // (cp1x,cp1y) 控制點 (x,y)結束點
複製代碼
三次貝塞爾曲線微信
bezierCurveTo( cp1x, cp1y ,cp2x , cp2y ,x , y )//(cp1x,cp1y)控制點1 (cp2x,cp2y) 控制點2 (x,y)結束點
複製代碼
fillStyle = color
strokeStyle = color
//color 能夠爲顏色值、漸變對象(並不是樣式!!!!)
lineWidth = value 線寬
lineCap = type (butt 、 round 、square)線條末端樣式 依次是方形、圓形&突出、方形&突出
複製代碼
lineJoin = type (round 、bevel 、 miter)線條交匯處樣式 依次是圓形、平角 、 三角形
複製代碼
ctx.setLineDash([ 實際長度 , 間隙長度 ]) //虛線 setLineDash接受數組
ctx.lineDashOffet //設置偏移量
複製代碼
var gradient = ctx.createLinearGradient( x1 ,y1 ,x2 ,y2); //線性漸變
var gradient = ctx.createRadialGradient(x1 ,y1 ,r1 ,x2 ,y2 ,r2);//徑向漸變
gradient.addColorStop( position , color )// position:相對位置0~1 color:該位置下的顏色
複製代碼
ctx.globalAlpha = value (0~1)
複製代碼
fillText( text , x , y , [,maxWidth]) 在(x,y)位置繪製text文本 最大寬度爲maxWidth(可選)
strokeText( text ,x ,y ,[,maxWidth]) 在(x,y)位置繪製text文本邊框 最大寬度爲maxWidth(可選)
font = value eg:"100px sans-serif"
複製代碼
drawImage( image , x , y , width , height ) image爲圖片對象、從(x,y)處放置寬高分別爲width height的圖片
drawImage( image , sx , sy , swidth , sheight ,dx ,dy ,dwidth ,dheight) 切片前四個是定義圖像源的切片位置和大小 後四個是按期切片的目標顯示位置大小
複製代碼
save()
restore()
複製代碼
translate( x , y ) 將canvas原點的移動到 (x,y) (save&restore保存初始狀態!!!)
rotate( angle ) 順時針方向旋轉座標軸 angle弧度
scale(x,y) 將圖形橫向縮放x倍、縱向縮放y倍 ( x、y大於1是放大 小於1爲縮放!!!)
複製代碼
globalCompositeOperation = type; source-over網絡
source-in編輯器
source-out
source-atop
destination-over
destination-in
destination-out
destination-atop
xor
copy
clip //只顯示裁剪區域內部區域 (使用save & restore 存儲canvas狀態!!!)
複製代碼
clearRect() 清空畫布
save&restore 保存恢復canvas狀態
複製代碼
區別詳見:www.cnblogs.com/xiaohuochai…
詳細標籤 : www.runoob.com/svg/svg-ref…
詳情:www.zhangxinxu.com/wordpress/2…
詳情:www.zhangxinxu.com/wordpress/2…
詳情:www.zhangxinxu.com/wordpress/2…
注意 : 上面的命令大寫表示絕對定位,小寫表示相對定位
<svg><text x="10" y="20" fill="red" transform="rotate(30,20,40)"></text></svg>
複製代碼
原文連接: tech.meicai.cn/detail/69, 也可微信搜索小程序「美菜產品技術團隊」,乾貨滿滿且每週更新,想學習技術的你不要錯過哦。