整合營銷服務商

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

          免費咨詢熱線:

          JavaScript操作Canvas實現畫板實例分析

          JavaScript操作Canvas實現畫板實例分析

          anvas元素用來支持在網頁上繪制圖形圖像

          以前在網頁中進行交互繪圖是很困難的(需要依賴額外的第三方插件),而引入的Canvas特性使得作者可以很容易的在網頁上繪制各種圖形和圖像。

          Canvas提供了腳本(JavaScript)應用接口,我們可以使用JS代碼來操作畫布,添加各種圖形以及實現用戶交互。這些特性使得HTML5在開發網頁游戲和一些復雜的網頁動畫上變得更加方便。

          比如下面這個例子,使用Canvas實現了簡單的在線畫板功能,你可以直接在網頁上繪制線條:

          實例可訪問:http://www.ikinsoft.com/3ddemo/Canvas.html

          效果圖如下:

          實際上Canvas規范包含兩個部分,一個是HTML5新引入的canvas元素,還有更為關鍵的2D渲染上下文。實際上前者只是一個容器,后者才是真正繪圖的地方。它包含繪圖和圖形操作所需要的全部方法和豐富功能。 強調一下:繪圖是在2D渲染上下文中進行的,而不是在canvas元素中進行。可以通過canvas元素訪問和顯示2D渲染上下文。

          canvas元素的語法很簡單,除了id和class外,還有兩個和容器尺寸相關的屬性:寬和高。

          <canvas id="myCanvas" height="500" width="500"></canvas>

          我們接下來先搞清楚2D渲染上下文的用法。

          畫布圖形實際上是繪制在2D渲染上下文里

          canvas元素并非Canvas中最強大的部分,真正的關鍵部分是2D渲染上下文,這是你真正繪制圖形的地方。canvas元素的用途只是作為2D渲染上下文的包裝器,它包含繪圖和圖形操作所需要的全部方法和豐富功能。理解這一點是很重要的,強調一下:繪圖是在2D渲染上下文中進行的,而不是在canvas元素中進行。可以通過canvas元素訪問和顯示2D渲染上下文。

          坐標系統

          2D渲染上下文是一種基于屏幕的標準繪圖平臺。與其他的2D平臺類似,它采用平面的笛卡兒坐標系統,左上角為原點(0,0)。向右移動時,x坐標值會增加;向下移動時,y坐標值會增加。如果你想把圖形繪制到正確的位置上,一定要理解這個坐標系統。

          坐標系統的1個單位通常相當于屏幕的1個像素,所以位置(24,30)是向右24像素和向下30像素的位置。有時候坐標系統的1個單位相當于2個像素(例如,在一些高分辨率顯示器中),但是一般的經驗法則是1個坐標單位等于1個屏幕像素。

          訪問2D渲染上下文

          我們先創建只有一個空白canvas元素的簡單HTML網頁:

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

          <!-- Insert fallback content here -->

          </canvas>

          在這個例子中,我們將這個canvas元素賦值給一個變量,然后再通過調用getContext方法將得到的2D渲染上下文賦給另一個變量。 必須強調一點,由于我們使用了jQuery,所以需要調用get方法才能訪問DOM中的canvas元素,然后才能夠訪問Canvas的getContext方法。

          有了包含2D渲染上下文的變量之后,就可以開始繪制圖形了。在上下文變量聲明語句之后添加下面這行代碼:

          context.fillRect(0,0,200,200);

          完整的JS代碼如下:

          上述代碼將在畫布上繪制如下的一個黑色矩形,從坐標(0,0)處開始,長寬均為200px:

          這個矩形是黑色的,因為Canvas所繪制元素的默認顏色是黑色。

          者:阿山

          轉發連接:https://segmentfault.com/a/1190000022535264

          天給大家分享一個不錯的Vue構建Canvas畫板Vue-SketchPad。

          vue-sketchpad 基于 vue.js+fabric.js 構建的web畫板。支持畫箭頭、虛線、圓形、文字、刪除、撤銷重做及清除畫板等功能。

          實現功能

          • 直線
          • 箭頭
          • 虛線
          • 輸入文字
          • 矩形
          • 標準圓形
          • 橢圓形
          • 等腰三角形
          • 刪除、移動、復位
          • 歷史記錄

          安裝使用

          # 克隆項目
          git clone https://github.com/HWcool/vue-sketchpad.git
          # 進入項目
          cd vue-sketchpad
          # 安裝依賴
          npm install
          # 本地開發
          npm run div
          # 打包
          npm run build

          fabric.js 就是針對canvas繁瑣的API進行的一系列封裝操作,而且現在這個庫還在維護中。在github上start高達16.7K+

          # fabric.js 高級畫板
          https://www.cnblogs.com/vipstone/p/8716419.html
          # 官網
          http://fabricjs.com/
          
          # github地址
          https://github.com/fabricjs/fabric.js

          最后附上項目地址,需要的朋友不可錯過。

          # 倉庫地址
          https://github.com/HWcool/vue-sketchpad

          ok,就介紹到這里。如果能對大家有所幫助的話,記得多支持一下哈~


          主站蜘蛛池模板: 国模无码视频一区| 中文字幕一区二区三区久久网站| 国产欧美色一区二区三区| 午夜视频在线观看一区| 一区二区三区在线视频播放| 玩弄放荡人妻一区二区三区| 久久国产精品一区免费下载| 日本一区二三区好的精华液| 国产综合无码一区二区三区| 亚洲国产精品第一区二区三区| 成人中文字幕一区二区三区| 午夜福利无码一区二区| 亚洲中文字幕无码一区二区三区 | 在线观看精品视频一区二区三区| 亚洲国产视频一区| 无码夜色一区二区三区| 91精品一区二区综合在线| 香蕉久久一区二区不卡无毒影院| 99精品一区二区三区无码吞精| 国模大胆一区二区三区| 国产午夜毛片一区二区三区 | 亚洲福利一区二区三区| 天天综合色一区二区三区| 精品日韩在线视频一区二区三区| 精品爆乳一区二区三区无码av| 色综合视频一区二区三区 | 国内自拍视频一区二区三区| 合区精品久久久中文字幕一区| 亚洲图片一区二区| 一区二区三区电影在线观看| 在线播放一区二区| 大屁股熟女一区二区三区| 3D动漫精品啪啪一区二区下载| 精品人妻一区二区三区毛片 | 精品在线一区二区三区| 亚洲国产老鸭窝一区二区三区| 亚洲av无码天堂一区二区三区| 免费播放一区二区三区| 国产成人精品a视频一区| 无码国产精品久久一区免费 | 国产福利91精品一区二区三区 |