Canvas的API整理

来源:http://www.cnblogs.com/brightking/archive/2016/08/16/5776383.html
-Advertisement-
Play Games

canvas元素 可被用來通過腳本(通常是JavaScript)繪製圖形。比如,它可以被用來繪製圖形,製作圖片集合,甚至用來實現動畫效果。你可以(也應該)在元素標簽內寫入可提供替代的的代碼內容,這些內…容將會在在舊的、不支持canvas元素的瀏覽器或是禁用了JavaScript的瀏覽器內渲染並展現。 ...


  canvas元素 可被用來通過腳本(通常是JavaScript)繪製圖形。比如,它可以被用來繪製圖形,製作圖片集合,甚至用來實現動畫效果。你可以(也應該)在元素標簽內寫入可提供替代的的代碼內容,這些內…容將會在在舊的、不支持canvas元素的瀏覽器或是禁用了JavaScript的瀏覽器內渲染並展現。

  canvas 看起來和 img 元素很相像,唯一的不同就是它並沒有 src 和 alt 屬性。實際上, canvas 標簽只有兩個屬性 —— width 和 height 。這些都是可選的,並且同樣利用…。這些都是可選的,並且同樣利用 DOM properties 來設置。當沒有設置寬度和高度的時候,canvas會初始化寬度為300像素和高度為150像素。該元素可以使用 CSS 來定義大小,但在繪製時圖像會伸縮以適應它的框架尺寸

  以上是MDN中關於Canvas的一些簡單介紹,我不知道Canvas有多少人接觸過,我自己也接觸沒有多久,不做游戲和數據方面的話,用的真的不多,但是知道一些還是有必要的,下麵是我自己整理的一些常用的API,其實在MDN上都有,只是比較凌亂,所以自己把這些整理在了一起,沒接觸過的可能看不太懂,這些都是Canvas的命令,但是有些會忘記,就整理了起來,如果需要,可以拿去,但是最好註明出處

  1. 標簽<canvas></canvas>
  2. 預設寬300,高150,不用用Css設置寬高
  3. 獲取方法var ctx = cas.getcontext("2d"),該方法返回CanvasRenderingContext2D的類型對象,利用該方法繪圖
  4. 基本繪圖命令
    • 設置開始繪圖位置:ctx.moveTo(x,y);
    • 設置直線到的位置:ctx.lineTo(x,y);
    • 描邊繪製:ctx.stroke();
    • 填充繪製:ctx.fill();
    • 自動閉合路徑:ctx.closePath();
    • 開啟新的繪製:ctx.beginPath();
    • 設置描邊顏色:ctx.strokeStyle;
    • 設置填充顏色:ctx.fillStyle;
    • 保存開始設置:ctx.save();
    • 重置到保存樣式:ctx.restore();
  5. 線型相關屬性
    • 設置線寬:ctx.linewidth;(數字即可)
    • 設置線末端類型:ctx.lineCap;('butt' 表示兩端使用方形結束,'round' 表示兩端使用圓角結束,'square' 表示突出的圓角結束)
    • 設置相交線的拐點:ctx.lineJoin;('round' 使用圓角連接,'bevel' 使用平切連接,'miter' 使用直角轉)
    • 獲得線段樣式數組:ctx.getLineDash();
    • 設置線段樣式:ctx.setLineDash();(數組形式設置)
    • 繪製線段偏移量:ctx.lineDashOffset;
  6. 矩形繪圖命令
    • 繪製矩形:ctx.rect;(因為還需要fill或者stroke才可以看見效果,所以直接使用下麵兩種)
    • 繪製邊框矩形:ctx.strokeRect(x,y,width,height);
    • 繪製填充矩形:ctx.fillRect(x,y,width,height);
    • 清除矩形區域:ctx.clearRect(x,y,width,height);
  7. 圓弧繪製命令
    • 繪製圓弧:ctx.arc(x,y,r,startAngle,endAngle,anticlockwise);參數 anticlockwise 表示是否採用預設的正向角度, 如果傳入 true 表示逆指針為正. 該參數可選
  8. 繪製文本命令
    • 繪製填充文字:ctx.fillText(text,x,y);
    • 繪製空心文字:ctx.strokeText(text,x,y);
    • 設置字體樣式:ctx.font;
    • 設置字體水平位置:ctx.textAlign;(start(預設), end, left, right, center)
    • 設置字體垂直位置:ctx.textBaseline;(top, middle, bottom, hanging, alphabetic, ideographic)
  9. 繪製圖片命令
    • 繪製圖片(3參數):ctx.drawImage(img,casx,casy);
    • 繪製圖片(5參數):ctx.drawImage(img,casx,casy,width,height);
    • 繪製圖片(9參數):ctx.drawImage(img,x,y,width,height,casx,casy,caswidth,casheight);
  10. 變換命令
    • 平移變換:ctx.translate(x,y);(x 表示水平移動, 正數向右, 負數向左;y 表示垂直移動, 正數向下, 負數向上)
    • 旋轉變化:ctx.ratate(radian);(參數是弧度, 表示旋轉的方式. 正數表示順時針旋轉, 負數表示逆時針旋轉.)
    • 縮放變化:ctx.scale(x,y);(x控制水平縮放倍率,y控制水平縮放倍率,傳1不做縮放)

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在Web項目的開發中,js,css文件會隨著項目的開發變得越來越多,越來越大,這就給給性能方面帶來一些問題,如,頁面引入的的js,css越多的話,那麼對就增加了http請求數,解決該問題的一個好的方法就是合併js,css文件. ...
  • 自己對canvas,但又有一顆做游戲的心TT。然後記錄一下對canvas的學習吧,用一個按方向鍵控制的小圓點來做練習。(編程時用了一些es6的語法) 示例的html很簡單,只有一個canvas元素: 這裡可以看到我在canvas標簽里直接定義了寬和高,這和在css裡面定義是不同的,canvas元素其 ...
  • Array類型是ECMAScript中最常用的引用類型。ECMAScript中的數據與其它大多數語言中的數組有著相當大的區別。雖然ECMAScript中的數據與其它語言中的數組一樣都是數據的有序列表,但不同的是,ECMAScript數組中的每一項可以保存任何類型的數據,無論是數值、字元串或者是對象。 ...
  • 這次的分享,主要還是想跟大家聊聊Javascript語言中很重要的概念之一,對象。為什麼說之一呢?因為Javascript其他重要概念還包括:作用域 作用域鏈 繼承 閉包 函數 繼承 數組 ...... 有機會會跟大家分享這些概念的。以下的介紹會分為如下:1:前言2:概述 2.1:對象創建 2.2: ...
  • 今天我又碼了兩個特效:一個是用原生input[type=range]的,另一個完全自定義的;下麵是完整代碼和演示: <!DOCTYPE html tip{ position: absolute; top: 30px; left: 0; right: 0; width: 200px; height: ...
  • DOM技術實現競賽題頁面 這一段時間學習了DOM操作和JS開發,我就自己開發一個競賽題的頁面。 一、業務需求 1、目標:做一個一百道選擇題的頁面 2、功能: 顯示題目和選項。 下一題上一題的按鈕,到第一題和第一百題時停止。 答對了顯示笑臉和笑話,答錯了顯示苦臉和正確答案。 二、開發思路 採用自頂向下 ...
  • 雖然我們的js將來會被很多的礦街(jQuery)取代,但js,我們現在依然不得不學,因為用途很廣泛 ...
  • 使用: 圖片: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...