【前端就業課 第一階段】HTML5 零基礎到實戰(十一)canvas 基礎

注意:手機(APP)打開,內容顯示更佳,不會的私聊博主即可
想要拿代碼或加入學習計劃(** 博主會監督你并且教你寫文章 **)的拉到最下面(PC端Web打開)加博主即可,目錄也在最下面。

參加1_bit博主前端學習計劃發文時在頭部記得加上本專欄鏈接,示例如下:

我已加入 1_bit 博主的免費前端 站起來 學習計劃,專欄鏈接:https://blog.csdn.net/a757291228/category_11609526.html

一、canvas

🐶1_bit:其實現在我們已經學完大部分的基礎內容了,馬上學到 CSS 就可以開始實戰了。

👸小媛:那么快嗎?

🐶1_bit:對呀,咱們這一節是第一個階段的最后的一篇文章,之后的話是以 CSS 為主了,然后剩下的 HTML 內容需要結合 CSS 進行講解;后面還會有專門的 JavaScript 課程將會更為詳細的講解 JavaScript。

👸小媛:喔,明白了。

🐶1_bit:那這一節課咱們就簡單的使用 js 來畫畫吧?

👸小媛:哈?可以畫畫嗎?

🐶1_bit:對的,咱們使用 HTML5 的 canvas 來畫畫。

👸小媛:是使用 JavaScript 進行圖像繪制?

🐶1_bit:對的。

👸小媛:那什么是 canvas 呢?

🐶1_bit:顧名思義 canvas 就是一塊畫布,咱們在上面可以繪制圖像。

👸小媛:還真是字面意思。

🐶1_bit:那咱們現在就開始吧。

二、canvas 基礎繪制線段

🐶1_bit:在 html 中,用 canvas 標簽表示畫布,如下代碼所示。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>1_bit 的前端實戰課程11 javascript</title><style>canvas{background-color:bisque;}</style>
</head>
<body><canvas id="tCanvas" width="500" height="500"></canvas>
</body>
</html>

🐶1_bit:像以上代碼中,咱們可以發現我在 head 部分添加了一個 style,在 style 中添加了一個 canvas 的背景色樣式,是為了給予這個canvas背景色方便查看。

👸小媛:不然就是跟界面一樣的顏色然后就不好觀察了嗎?

🐶1_bit:對的,是這個意思,你還可以看到這個canvas 我還給予了寬高和ID,這些是要給予到的一些基本屬性。

👸小媛:明白了。

🐶1_bit:接下來咱們看看這個 canvas 如何進行使用,如以下代碼示例。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>1_bit 的前端實戰課程11 javascript</title><style>canvas{background-color:bisque;}</style>
</head>
<body><canvas id="tCanvas" width="500" height="500"></canvas><script>var canvas=document.getElementById('tCanvas');//通過 getElementById 取得對應的 canvas 對象var context=canvas.getContext('2d');//表示需要繪制圖像的類型為2dcontext.beginPath();//充值畫布路徑,你畫的線段、線條都是路徑context.moveTo(100,100);//下筆點移動到某一個位置context.lineTo(200,200);//從下筆點繪制一條線段到 xy 為 200 處context.stroke();//開始繪制</script>
</body>
</html>

👸小媛:一下子好多東西,感覺都看不懂了。

🐶1_bit:沒關系,咱們慢慢來,首先查看第一條代碼:

var canvas=document.getElementById('tCanvas');

🐶1_bit:以上代碼中,document.getElementById('tCanvas');你應該明白,表示得到 id 為 tCanvas 的這個 dom 節點,這個節點為一個 canvas 標簽,那么此時變量 canvas 就表示了這個 canvas 標簽,這點明白吧?

👸小媛:明白,意思就是這是個 canvas 對象了,可以使用這個對象所對應的一些功能。

🐶1_bit:你亂猜的吧?不過,猜對了。我們接著查看下一句代碼:

var context=canvas.getContext('2d');

🐶1_bit:這一句代碼中的 canvas 對象就是指對應的畫布對象,因為剛剛使用了 getbyID 函數獲取到了對應的節點,此時這個 canvas 就表示這個節點通過 getContext 指定當前所需要繪制的圖片類型,在此傳入了參數 2d,表示接下來以 2d 繪制為主。

👸小媛:明白了。

🐶1_bit:再接著代碼是:

context.beginPath();

🐶1_bit:這段代碼表示“清空畫布”,或者說是重置畫布的內容,讓畫布干凈些。

👸小媛:這個明白,檫黑板一樣的道理。

🐶1_bit:接著到代碼:

context.moveTo(100,100);

🐶1_bit:這段代碼表示將下筆的點移動到 xy 值為 (100,100) 處。

👸小媛:這個意思?

🐶1_bit:對呀,move to 意思不是說移動到哪里嗎?

👸小媛:原來如此。

🐶1_bit:接下來代碼:

context.lineTo(200,200);

🐶1_bit:的意思也很簡單,就是你之前使用 moveTo 找到了一個洛必點,那么現在 lineTo 就是畫一條直線,你要把這一條直線畫到哪,那 200,200 就是 xy 的坐標。

👸小媛:那么簡單。

🐶1_bit:那你認為現在的線段已經開始“繪制”了嗎?

👸小媛:繪制了呀,剛剛不是都代碼寫了嗎?

🐶1_bit:還差一步,最后一個代碼:

context.stroke();

🐶1_bit:才是表示開始繪制,你可以理解成之前所寫的代碼只是你在描述你要繪制的步驟,最后一步代碼則是表示將那些你要繪制的路徑進行繪制。

👸小媛:明白了,所以最后一句代碼不能少。

🐶1_bit:是的。

三、矩形繪制

🐶1_bit:接下來咱們來看看怎么繪制一個矩形吧?

👸小媛:一條一條線段的畫?

🐶1_bit:哪有那么麻煩,很簡單的,直接使用一個方法 fillRect,下面是一個完整的示例。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>1_bit 的前端實戰課程11-1 javascript</title><style>canvas{background-color:bisque;}</style>
</head>
<body><canvas id="tCanvasa" width="500" height="500"></canvas><script>var canvas=document.getElementById('tCanvasa');var context=canvas.getContext('2d');context.beginPath();context.fillRect(10,10,300,400);</script>
</body>
</html>

👸小媛:不用 stroke 方法了嗎?

🐶1_bit:對的,在這里直接使用 fillRect 方法繪制一個矩形,其中 10,10 是你的落筆點,或者你理解為起始繪制坐標,隨后的 300 和 400 分別是對應的寬和高,這樣的話就可以繪制出如下的矩形了。

在這里插入圖片描述
👸小媛:不過黑色好丑,怎么改顏色?

🐶1_bit:那你只需要添加 fillStyle 屬性即可,例如 context.fillStyle = "#FF0000";  。
在這里插入圖片描述
🐶1_bit:那么繪制出來的圖像將會按照你給予的顏色進行填充。
在這里插入圖片描述

👸小媛:那我不想填充顏色呢?

🐶1_bit:那你只需要將 fillRect 方法替換成 strokeRect 方法即可,fillRect 是填充繪制矩形 strokeRect 則是不填充:
在這里插入圖片描述
🐶1_bit:繪制的結果如下:
在這里插入圖片描述
👸小媛:那怎么樣指定一個顏色是線條顏色呢?

🐶1_bit:只需要給予 strokeStyle 屬性設置一個顏色即可,例如 context.strokeStyle = "#FF0000";
在這里插入圖片描述
🐶1_bit:這樣的話就可以繪制出指定顏色的矩形了。
在這里插入圖片描述

三、三角形繪制

👸小媛:那三角形怎么繪制?

🐶1_bit:要繪制三角形我們需要搞懂線段的繪制的概念,咱們看以下代碼。

<body><canvas id="tCanvasa" width="300" height="300"></canvas><script>var canvas=document.getElementById('tCanvasa');//通過 getElementById 取得對應的 canvas 對象var context=canvas.getContext('2d');//指定了您想要在畫布上繪制的類型context.lineTo(20, 20);context.lineTo(20, 170);context.lineTo(170, 170);context.lineTo(20, 20);context.stroke();</script>
</body>

🐶1_bit:以上代碼中,首先把落筆點放在了xy均為20處,接下來繪制一條線段到 20,170 處,那么此時肯定是一條垂直的直線,接著再從20,170 處繪制一條直線到 170,170 處,那么此時就有了三角形的兩條邊,接著再從 170,170 處返回最先落筆點,那么此時三角形繪制完畢。
在這里插入圖片描述
👸小媛:原來落筆點就是你繪制的的線段的最后坐標處呀。

🐶1_bit:對的,不過你注意,一定要在路徑編寫完代碼后添加 stroke 方法。

👸小媛:明白了,那怎么填充顏色呢?

🐶1_bit:填充顏色很簡單,你只需要添加 fill 方法即可:context.fill();
在這里插入圖片描述
在這里插入圖片描述
👸小媛:接下來我該問如何改變填充色了。

🐶1_bit:填充色使用 fillStyle ,例如 context.fillStyle = "#FF0000";,要注意線段需要閉合才可以填充顏色喲。
在這里插入圖片描述
👸小媛:明白了。

目錄

【前端就業課 第一階段】HTML5 零基礎到實戰(十一)canvas 基礎
【前端就業課 第一階段】HTML5 零基礎到實戰(十)JavaScript基礎一篇入門
【前端就業課 第一階段】HTML5 零基礎到實戰(九)列表
【前端就業課 第一階段】HTML5 零基礎到實戰(八)表單詳解
【前端就業課 第一階段】HTML5 零基礎到實戰(七)文字及圖片樣式
【前端就業課 第一階段】HTML5 零基礎到實戰(六)表格詳解
【前端就業課 第一階段】HTML5 零基礎到實戰(五)基礎元素
【前端就業課 第一階段】HTML5 零基礎到實戰(四)偽類與偽元素
【前端就業課 第一階段】HTML5 零基礎到實戰(三)一篇文CSS基礎入門
【前端就業課 第一階段】HTML5 零基礎到實戰(二)超鏈接
【前端就業課 第一階段】HTML5 零基礎到實戰(一)基礎代碼結構詳解

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

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

相關文章

【遙感數字圖像處理教程】理論基礎知識目錄(5章全)

文章目錄1. 專欄簡介2. 專欄地址3. 專欄目錄1. 專欄簡介 遙感數字圖像的處理&#xff0c;是對遙感數字圖像的計算機處理。與工業和醫學數字圖像不同&#xff0c;遙感數字圖像類型更為多樣&#xff0c;內容更為復雜。因此&#xff0c;遙感數字圖像的處理&#xff0c;不僅需要掌握…

Android OkHttp3簡介和使用詳解

一 OKHttp簡介 OKHttp是一個處理網絡請求的開源項目&#xff0c;Android 當前最火熱網絡框架&#xff0c;由移動支付Square公司貢獻&#xff0c;用于替代HttpUrlConnection和Apache HttpClient(android API23 6.0里已移除HttpClient&#xff09;。 OKHttpGitHub地址 OKHttp優…

C語言試題一之計算并輸出n(包括n)以內能被5或9整除的所有自然數的倒數之和

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 請編寫函數…

MonoRail學習筆記十一:頁面控件的填充和驗證

Mono提供很多組件可以方便的處理頁面&#xff1a;可以自動將后臺的值填充到頁面&#xff0c;可以自動進行Javascript驗證&#xff0c;可以自動在后臺驗證等。這些功能都是比較實用的&#xff0c;可以減少很多開發 FormHelper是用來對應html頁面中Form內的tag的&#xff0c;可以…

JavaBean的詳細及引用

1.JavaBean實際是具有統一接口格式的java類 2.JavaBean的組成&#xff1a;屬性(Properties)、方法(Method)、事件(Events) 3.一個JavaBean的例子(該例子是用的Simple屬性<屬性在以后說>) //我遵循的習慣是類名大寫&#xff0c;包名小寫package com;//意思是將 FirstBean這…

驅動開發實戰之TcpClient

場景模擬假設你有一批非標設備需要對接&#xff0c;你需要根據設備方提供的協議&#xff0c;為IoTGateway開發驅動&#xff0c;進行數據交互。文章比較長也可以到官網會有更好的體驗&#xff0c;地址:http://iotgateway.net/docs/iotgateway/driver/tcpclient請先瀏覽上一篇驅動…

php讀取acc

<?PHP/*創建ADO連接*/$conn new COM("ADODB.Connection") or die ("ADO Connection faild.");$connstr "DRIVER{Microsoft Access Driver (*.mdb)}; DBQ" . realpath("DATUM/cnbt.mdb");$conn->Open($connstr);/*創建記錄集查…

【遙感數字圖像處理實驗】Erdas版詳細圖文實驗教程(8實驗全)

文章目錄1. 專欄簡介2. 專欄地址3. 專欄目錄1. 專欄簡介 遙感數字圖像的處理&#xff0c;是對遙感數字圖像的計算機處理。與工業和醫學數字圖像不同&#xff0c;遙感數字圖像類型更為多樣&#xff0c;內容更為復雜。因此&#xff0c;遙感數字圖像的處理&#xff0c;不僅需要掌握…

WEBAPI 增加身份驗證 (OAUTH 2.0方式)

1&#xff0c;在Webapi項目下添加如下引用&#xff1a;Microsoft.AspNet.WebApi.OwinOwinMicrosoft.Owin.Host.SystemWebMicrosoft.Owin.Security.OAuthMicrosoft.Owin.Security.CookiesMicrosoft.AspNet.Identity.OwinMicrosoft.Owin.Cors2&#xff0c; 在項目下新建Startup類…

C語言試題二之計算并輸出下列多項式值s=1+1/(1+2)+1/(1+2+3)+..1/(1+2+3…+50)

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 計算并輸出…

無代碼iVX編程實現簡單 小蜜蜂 經典游戲

首先咱們打開 iVX 的在線編輯器&#xff1a;https://editor.ivx.cn/ 隨后選擇相對定位&#xff0c;咱們選擇2D游戲類型制作一個簡單小蜜蜂游戲&#xff1a; 接著咱們創建一個物理世界&#xff0c;并且將頁面布局如以下&#xff1a; 以上布局中&#xff0c;矩形為模擬飛機、…

【無人機航空攝影測量精品教程】目錄:Pix4d、EPS、CC、PhotoScan、Godwork項目化作業流程及注意事項匯總

文章目錄1. 專欄簡介2. 專欄地址3. 專欄目錄1. 專欄簡介 該專欄為目前最為熱門的無人機航測內外業項目&#xff0c;主要內容包括&#xff1a;無人機航測外業作業流程&#xff08;像控點布設、航線規劃、仿地飛行、航拍&#xff09;和內業數據處理軟件&#xff08;Pix4d、CC、EP…

WPF 基礎控件之 Slider 樣式

其他基礎控件1.Window2.Button3.CheckBox4.ComboBox5.DataGrid 6.DatePicker7.Expander8.GroupBox9.ListBox10.ListView11.Menu12.PasswordBox13.TextBox14.RadioButton15.ToggleButtonSlider 實現下面的效果1&#xff09;Slider來實現動畫&#xff1b;Grid嵌套 Border并設置S…

SQL 通過syscolumns.xtype動態查找指定數據類型字段所包含的數據

表中太多列&#xff0c;只想查找某些比如&#xff0c;數據類型為varchar的字段的數據。 思路&#xff1a;1、先獲取列名&#xff1a; select * from syscolumns where id(select max(id) from sysobjects where xtypeu and nametest_A)2、查找指定數據類型&#xff0c;xtype就…

css案例學習之span邊框實現的特殊效果

bottom left bottom right top left top right 配合顏色來使用&#xff0c;實現一些神奇的效果 #menu a span{height:0;width:0;/*border-top:solid 6px #fff;border-left:solid 6px #f90;*//*border-top:solid 6px #fff;border-right:solid 6px #f90;*//*border-bottom:solid …

網頁版消消樂快速實現,無代碼嗎iVX 真那么簡單?

最近沒事想做個消消樂&#xff0c;然后聽說 iVX 免費了&#xff0c;所以又跑去看看 iVX 了&#xff0c;就用一個無代碼來看看消消樂怎么玩吧。 首先咱們打開 iVX 的在線編輯器&#xff1a;https://editor.ivx.cn/ 隨后咱們不需要游戲類型也可以制作一個消消樂游戲&#xff1a…

虛擬化記錄--No.1

近段時間&#xff0c;會花些時間做關于系統虛擬化的工作。所以會做一些這樣的記錄。相信很多東西不會特別成體系&#xff0c;每個人因為關注的不同而記錄和學習的重點也會有比較大的出入。這篇是NO.1(注意不是TOP 1 )真的是由于對于ORACLE很有感覺&#xff0c;所以上手去做的也…

C語言試題三之計算并輸出 s=1+(1+2^(0.5))+(1+2^(0.5)+3^(0.5))+…+(1+2^(0.5)+3^(0.5)+…+n^(0.5))

??個人主頁:個人主頁 ??系列專欄:C語言試題200例目錄 ??推薦一款刷算法、筆試、面經、拿大公司offer神器 ?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1 、題目 請編寫函…

C# Java間進行RSA加密解密交互

這里&#xff0c;講一下RSA算法加解密在C#和Java之間交互的問題&#xff0c;這兩天糾結了很久&#xff0c;也看了很多其他人寫的文章&#xff0c;頗受裨益&#xff0c;但沒能解決我的實際問題&#xff0c;終于&#xff0c;還是被我搗鼓出來了。 首先&#xff0c;介紹一下寫這代…

【Microstation】三維建模基礎及軟件入門到精通實驗教程目錄

文章目錄1. 專欄簡介2. 專欄地址3. 專欄目錄1. 專欄簡介 MicroStation是一款非常不錯的二維和三維設計軟件&#xff0c;由奔特力&#xff08;Bentley&#xff09;工程軟件系統有限公司開發的一款軟件。在CAD設計上該軟件是和AutoCAD是齊名的軟件&#xff0c;其專用的文件格式是…