對Canvas的研究

1。標簽定義圖形,比如圖表和其他圖像,您必須使用腳本來繪制圖形。

什么是 canvas?

HTML5 <canvas> 元素用于圖形的繪制,通過腳本 (通常是JavaScript)來完成.

<canvas> 標簽只是圖形容器,您必須使用腳本來繪制圖形。

你可以通過多種方法使用 canvas 繪制路徑,盒、圓、字符以及添加圖像。

創建一個畫布(Canvas)

一個畫布在網頁中是一個矩形框,通過 <canvas> 元素來繪制.

注意:?默認情況下 <canvas> 元素沒有邊框和內容。

<canvas>簡單實例如下:

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

注意:?標簽通常需要指定一個id屬性 (腳本中經常引用), width 和 height 屬性定義的畫布的大小.

提示:你可以在HTML頁面中使用多個 <canvas> 元素.

首先,找到 <canvas> 元素:

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

然后,創建 context 對象:

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

getContext("2d") 對象是內建的 HTML5 對象,擁有多種繪制路徑、矩形、圓形、字符以及添加圖像的方法。

下面的兩行代碼繪制一個紅色的矩形:

ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,150,75);

設置fillStyle屬性可以是CSS顏色,漸變,或圖案。fillStyle 默認設置是#000000(黑色)。

fillRect(x,y,width,height) 方法定義了矩形當前的填充方式。

Canvas 坐標

canvas 是一個二維網格。

canvas 的左上角坐標為 (0,0)

上面的 fillRect 方法擁有參數 (0,0,150,75)。

意思是:在畫布上繪制 150x75 的矩形,從左上角開始 (0,0)。

坐標實例

如下圖所示,畫布的 X 和 Y 坐標用于在畫布上對繪畫進行定位。鼠標移動的矩形框上,顯示定位坐標。

Canvas - 路徑

在Canvas上畫線,我們將使用以下兩種方法:

  • moveTo(x,y) 定義線條開始坐標
  • lineTo(x,y) 定義線條結束坐標

繪制線條我們必須使用到 "ink" 的方法,就像stroke().

Canvas - 文本

使用 canvas 繪制文本,重要的屬性和方法如下:

  • font - 定義字體
  • fillText(text,x,y) - 在 canvas 上繪制實心的文本
  • strokeText(text,x,y) - 在 canvas 上繪制空心的文本

使用 fillText():

Canvas - 漸變

漸變可以填充在矩形, 圓形, 線條, 文本等等, 各種形狀可以自己定義不同的顏色。

以下有兩種不同的方式來設置Canvas漸變:

  • createLinearGradient(x,y,x1,y1) - 創建線條漸變
  • createRadialGradient(x,y,r,x1,y1,r1) - 創建一個徑向/圓漸變

當我們使用漸變對象,必須使用兩種或兩種以上的停止顏色。

addColorStop()方法指定顏色停止,參數使用坐標來描述,可以是0至1.

使用漸變,設置fillStyle或strokeStyle的值為 漸變,然后繪制形狀,如矩形,文本,或一條線。

使用 createLinearGradient():

?

轉載于:https://www.cnblogs.com/zhouyideboke/p/11175231.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247515.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247515.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247515.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue中watch的簡單應用

Vue.js 有一個方法 watch&#xff0c;它可以用來監測Vue實例上的數據變動。 如果對應一個對象&#xff0c;鍵是觀察表達式&#xff0c;值是對應回調&#xff0c;值也可以是方法名&#xff0c;或者是對象&#xff0c;包含選項。 下面寫兩個demo&#xff0c;參考demo來了解一下 …

小程序中textarea點擊按鈕事件

textarea 的 blur 事件會晚于頁面上的 tap 事件&#xff0c;如果需要在 button 的點擊事件獲取 textarea&#xff0c;可以使用 form 的 bindsubmit。 <view class"section"><form bindsubmit"bindFormSubmit"><textarea placeholder"f…

placeholder的兼容處理方法

placeholder是html5新增的一個屬性&#xff0c;極大的減輕了表單提示功能的實現&#xff0c;但是對于IE6-IE9真的是只能靠自己寫啦&#xff01; 但是在自己寫時會掉進了一個坑里&#xff0c;還好用了一會時間還是爬出來啦。 最終的解決方法方法如下&#xff1a; 1 <form nam…

常用數據處理

1、樹形數據轉換 在處理商品分類數據、企業列表數據等情況下&#xff0c;后臺會返回到前臺所有的數據。我們需要根據parentId,數據ID將數據轉換為樹形數據進行渲染。 /*** 樹形數據轉換* param {*} data* param {*} id* param {*} pid*/ export function treeDataTranslate(d…

運行Xcode時出現 Lazy loading NSBundle MobileCoreServices.framework和 Loaded MobileCoreServices.framework

運行Xcode時出現 Lazy loading NSBundle MobileCoreServices.framework和 Loaded MobileCoreServices.framework 解決方案&#xff1a; 1、打開項目的 Product-->Scheme --> Edit Scheme--> Run-->Arguments-->Environment Variables添加Name為OS_ACTIVITY_MO…

less中的for循環

.loop(count) when (counter > 0) { .loop((counter - 1)); // 遞歸調用自身width: (10px * counter); // 每次調用時產生的樣式代碼}轉載于:https://www.cnblogs.com/zhouyideboke/p/11178271.html

詳解 vue-cli 的打包配置文件代碼(轉)

一、前言 對于webpack基礎不好&#xff0c;node指令不通的童鞋。估計對自己搭建Vue、react腳手架是相當頭疼的&#xff0c;有種無從下手的感覺。然而&#xff0c;從頭看這2塊&#xff0c;耗時太長&#xff0c;而且說實話得練才行&#xff0c;不練練手看不明白。那大多數人就采取…

iOS之頁面布局-踩坑的原由

iOS之頁面布局 原文請點擊 在《iOS 7 UI Transition Guide》中有在《iOS 7 UI Transition Guide》的Bar and Bar Buttons一節中有這么一段話 In iOS 7, the status bar is transparent, and other bars—that is, navigation bars, tab bars, toolbars, search bars, and sco…

工作中的javascript代碼收集及整理

有個pub庫放在blog的文件夾里面了,注意查查1.用javascript去除字符串左右空格,包括全角和半角//用javascript去除字符串左右空格,包括全角和半角String.prototype.trim function() { //其中表示為&#xff1a;對象.屬性.方法函數方法var strTrim this.replace(/(^\s*)|(\s*$)/…

iOS11 更改狀態欄、導航欄顏色的方法

ios上狀態欄 就是指的最上面的20像素高的部分 狀態欄分前后兩部分&#xff0c;要分清這兩個概念&#xff0c;后面會用到&#xff1a; 前景部分&#xff1a;就是指的顯示電池、時間等部分&#xff1b; 背景部分&#xff1a;就是顯示黑色或者圖片的背景部分&#xff1b; (一)設…

i春秋DMZ大型靶場實驗(四)Hash基礎

下載工具包 打開目標機 通過目錄爆破發現 phpmyadmin 在登錄位置嘗試注入 返現 可以注入 直接上sqlmap 上 bp 代理抓包 sqlmap.py -r bp.txt --dbs 利用sqlmap 跑出root 密碼 root666888 登錄 phpmyadmin t通過路徑報錯得到絕對路徑 c:\\www\\1.php root 權限…

解決MAC系統升級導致COCOAPODS失效問題

使用pod install出現如下錯誤 -bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby: bad interpreter: No such file or directory 這是Mac升級系統導致&#xff0c;當你的Mac系統升級為 high siera的時候&#xff0c;別忘記更新…

ASP.NET中進行消息處理(MSMQ) 二

在我上一篇文章《ASP.NET中進行消息處理(MSMQ)一》里對MSMQ做了個通俗的介紹&#xff0c;最后以發送普通文本消息和復雜的對象消息為例介紹了消息隊列的使用。 本文在此基礎上繼續介紹MSMQ的相關知識點&#xff0c;最后還是通過一個示例程序來分析MSMQ在實際項目開發中的應用。…

js常用的數組方法

js常用的數組方法 1.filter() 不會改變原始數組&#xff0c;新數組中的元素是過濾指定數組中符合條件的所有元素 兩種寫法區別&#xff1a;有return 的加了{}&#xff0c;否則沒有return不需要加{} var aa [1, 2, 3, 4, 4, 5, 6, 6]; var bb aa.filter((item, index, sel…

iOS 適配HTTPS方法

一切為了迎合蘋果 在WWDC 2016開發者大會上&#xff0c;蘋果宣布了一個最后期限&#xff1a;到2017年1月1日 App Store中的所有應用都必須啟用 App Transport Security安全功能。App Transport Security&#xff08;ATS&#xff09;是蘋果在iOS 9中引入的一項隱私保護功能&…

模板—tarjan求割邊

int dfn[MAXN],low[MAXN],cnt; void tarjan(int x,int edg) {low[x]dfn[x]cnt;for(int if(x);i;in(i))if(!dfn[v(i)]){tarjan(v(i),i);low[x]min(low[x],low[v(i)]);if(low[v(i)]>dfn[x])isbridge[i]isbridge[i^1]1;}else if(i!(edg^1))low[x]min(low[x],dfn(v(i))); } 轉載…

GoJs Pictures 官方介紹文檔

圖片 使用Picture類顯示圖像。 最常見的用法是使用URL字符串設置Picture.source屬性&#xff0c;以及通過GraphObject.desiredSize&#xff08;圖對象的所需尺寸&#xff09;獲取或通過設置GraphObject.width&#xff08;圖對象的寬&#xff09;和GraphObject.height&#xff0…

怎樣購買及安裝ssl安全證書

查找資料記錄&#xff0c;不是我的項目筆記 現在越來越多的網站都開始用安全鏈接了&#xff0c;在國外的話&#xff0c;如果不是一個安全鏈接&#xff0c;用戶很大程度上會拒絕使用&#xff0c;所有安全鏈接是未來的趨勢&#xff0c;樓主第一次配安全證書的時候&#xff0c;剛剛…

XmlViewResolver 和 ResourceBundleViewResolver

使用XmlViewResolver 如果視圖對象的 Bean 數目太多&#xff0c;那么直接在 smart-servlet.xml 文件中配置&#xff0c;勢必影響主配置文件的簡潔性。XmlViewResolver 和 BeanNameViewResolver 功能相似&#xff0c;唯一不同的是它可以將視圖 Bean 定義在一個獨立的 XML 文件中…