Canvas 基本繪製(上)

2022-01-09 SVG排版與WEB前端分享

HTML5學堂:之前的文章與大家分享了SVG的一系列操作,但是SVG也是存在一些劣勢,所以今天開始為大家分享介紹HTML5 Canvas的相關知識,Canvas是什麼呢?又如何進行Canvas進行圖像的繪製呢?在Canvas當中有哪些繪製圖形的方法?來看看下面的文章吧。

Canvas與SVG的比較

Canvas的基本知識 - 什麼是Canvas

canvas標記由Apple在Safari 1.3 Web 瀏覽器中引入

canvas是HTML5新增的一個標籤,它的主要作用是畫矢量圖;

canvas的API接口提供給了JavaScript;

Canvas的基本知識 - 使用Canvas能夠做什麼

canvas能做動畫,但不是為動畫而生,能做遊戲,能做特別炫的效果,主要是為畫圖而生。

canvas元素本身並沒有繪製能力(它僅僅是圖形的容器) - 您必須使用腳本來完成實際的繪圖任務。

Canvas的基本知識 - getContext對象

getContext()方法可返回一個對象,該對象提供了用於在畫布上繪圖的方法和屬性。參數為2d,目前只有2d的合法

注意:canvas有默認寬高,如果使用css設置Canvas畫布的大小,則導致畫布按比例縮放到你設置的值,所以canvas畫布寬高的設置需要在標籤中,使用屬性的設置方法進行設置。

Canvas設置大小測試實例

<!doctype html>

<html>

<head>

<meta charset="UTF-8">

<title>HTML5學堂</title>

<link rel="stylesheet" href="../css/reset.css">

<script src="../js/jquery-1.8.3.min.js" charset="utf-8" type="text/javascript"></script>

<style>

.can-one {

border: 1px solid #999;

}

.can-two {

width: 200px;

height: 100px;

border: 1px solid #999;

}

</style>

</head>

<body>

<canvas id="testCanvasOne" width="400" height="200"></canvas>

<canvas id="testCanvasTwo" width="400" height="200"></canvas>

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

<script>

var testCanvasOne = $("#testCanvasOne")[0];

var contextOne = testCanvasOne.getContext("2d");

contextOne.beginPath();

contextOne.rect(180, 80, 40, 40);

contextOne.stroke();

contextOne.closePath();

var testCanvasTwo = $("#testCanvasTwo")[0];

var contextTwo = testCanvasTwo.getContext("2d");

contextTwo.beginPath();

contextTwo.rect(180, 80, 40, 40);

contextTwo.stroke();

contextTwo.closePath();

var testCanvasThree = $("#testCanvasThree")[0];

var contextThree = testCanvasThree.getContext("2d");

contextThree.beginPath();

contextThree.rect(180, 80, 40, 40);

contextThree.stroke();

contextThree.closePath();

</script>

</body>

</html>

代碼效果圖:

路徑

路徑通常指存在於多種計算機圖形設計軟體中的以貝塞爾曲線為理論基礎的區域繪製方式。繪製時產生的線條稱為路徑。 路徑由一個或多個直線段或曲線段組成。 線段的起始點和結束點由錨點標記,就像用於固定線的針。 通過編輯路徑的錨點,您可以改變路徑的形狀。 您可以通過拖動方向線末尾類似錨點的方向點來控制曲線。路徑可以是開放的,也可以是閉合的。 對於開放路徑,路徑的起始錨點稱為端點。

Canvas基本方法

開始與閉合路徑

beginPath( )、closePath( )

移動畫筆與畫線

moveTo(x, y)、lineTo(x, y)

描繪路徑與填充路徑

stroke( )、fill( )

文本繪製方法

strokeText(text, x, y, maxWidth):繪製文字輪廓

fillText(text, x, y, maxWidth):填充文字text即是要寫入的文字,x、y為文字起始位置的坐標,maxWidth為文字的寬度,能夠防止文字太寬而溢出,瀏覽器會縮減文字以適應寬度

Canvas基本方法操作實例

<!doctype html>

<html>

<head>

<meta charset="UTF-8">

<title>HTML5學堂</title>

<link rel="stylesheet" href="../css/reset.css">

<style>

.draw {

border: 1px solid red;

}

</style>

</head>

<body>

<canvas id="testCanvas" width="300" height="150"></canvas>

<script>

var testCanvas = document.getElementById("testCanvas");

// 獲取getContext()對象

var context = testCanvas.getContext("2d");

// 開始路徑

context.beginPath();

// 移動畫筆

context.moveTo(20, 20);

// 畫線

context.lineTo(280, 20);

context.lineTo(280, 130);

context.lineTo(20, 130);

context.lineTo(20, 20);

// 繪製路徑

context.stroke();

// 填充路徑

// context.fill();

// 關閉路徑

context.closePath();

</script>

</body>

</html>

代碼效果圖:

學完了,來點作業吧~

利用該文章講解的canvas知識點來完成下圖。

本文來源:HTML5學堂

想了解更多資訊,請點擊左下方的閱讀原文

相關焦點

  • html5 canvas畫布繪製矩形和圓形
    html5為我們提供了非常有特色的標籤,canvas標籤為我們可以實現在網頁中畫畫提供了便利,接下來我們列舉他的常用操作。新建一個html5的文檔,建立一個canvas畫布,設置長寬,這裡需要特別注意,canvas標籤可以在標籤內設置width,height,也能通過css來設置,但是通過css來設置的標籤,當繪製圖形的時候會變形,所以我們建議直接在標籤內設置。
  • canvas文本繪製自動換行、字間距、豎排等實現
    yy是文本繪製的垂直參考點坐標。隨著CanvasRenderingContext2D.textBaseline的設置不同,y的坐標位置也不同。支持多種基線類型(CSS中也有對應概念),MDN上有一張圖可以很好地表示文本基線和文本垂直位置的關係。
  • html中繪製圖形標籤的詳細介紹
    本篇將介紹的是html中<canvas>標籤的用法,感興趣的朋友可以一起研究一下!在html5中,新增了很多實用的標籤,今天為大家介紹的是html5新增標籤<canvas>,<canvas>標籤只是一個容器,對內容並沒有樣式的更改。那它在html中有什麼用,接下來我們就一起來看看吧!
  • Canvas學習:繪製文本
    不過在Canvas中到目前為止只提供了一些必備的基本功能,例如文本的描邊與填充,向Canvas之中放置文本,以及用像素為單位來計算任意字符串的寬度等。接下來的內容,我們就來了解在Canvas中怎麼繪製文本以及一些基本的操作。
  • Canvas 教程:如何繪製帶箭頭的曲線
    的絕對定位偏移量,因為是任意兩點,所以對角可能是左上加右下,也可能是左下加右上,不論是哪一種,它的左偏移量一定是兩個點的左偏移量的最小值,同理,上偏移量也是兩個點的上偏移量的最小值。再確定 Canvas 的寬和高,寬等於兩點左偏移量之差的模,長等於兩點上偏移量之差的模。
  • H5的新功能,canvas畫布的矩形繪製,看了就會!
    繪製矩形canvas提供了三種方法繪製矩形: ---->繪製一個填充的矩形(填充色默認為黑色) fillRect(x, y, width, height)> ---->繪製一個矩形的邊框(默認邊框為:一像素實心黑色) strokeRect(x, y, width, height) ---->清除指定矩形區域,讓清除部分完全透明。
  • 使用HTML5 Canvas arc()繪製圓形/圓環
    提示:請使用 stroke() 或 fill() 方法在畫布上繪製實際的弧。--下面excanvas.js需下載才能在IE下支持canvas--> <!(); //繪製黑色小圓 ctx.beginPath(); ctx.arc(200,240,40,0,Math.PI*2,true); ctx.fillStyle="black"; ctx.closePath(); ctx.fill(); //繪製白色小圓 ctx.beginPath(); ctx.arc(200,160,40,0,Math.PI*2,true); ctx.fillStyle="white
  • 微信小程序canvas繪製海報並保存本地相冊
    在做微信小程序電商項目中,想要分享一款商品,使用最多並且最簡便的方法就是使用小程序自帶的分享api進行分享,但是分享出去的頁面比較難看;另一種方法就是自己使用小程序canvas繪製分享的海報,這個海報可以保存在相冊裡,而且可以按照自己的需求效果進行頁面繪製。
  • matplotlib如何實現圖形繪製在tkinter的Canvas中?
    matplotlib如何實現圖形繪製在tkinter的Canvas中?今天番茄加速就來分享一下。下面就是最重要的tkinter和matplotlib集成部分,matplotlib提供FigureCanvasTkAgg對象,只需三行代碼,實現圖形繪製在tkinter的Canvas中:canvas_l = FigureCanvasTkAgg(figure_l, frame_l)# 用draw代替canvas_l.draw()canvas_l.get_tk_widget
  • 「強烈建議收藏」小程序canvas繪製帶二維碼海報全流程(枚舉踩坑,詳解解決方案)
    如果用 b 點位置來繪製canvas,勢必不能完美還原設計稿,所以我們在用這種方式繪製canvas的時候,應該注意這些細節問題。封裝獲取位置信息方法我們需要繪製海報上的每一個點位,首先想到的就是獲取小程序元素位置方法,並封裝該方法。我們用promise來防止深層次的回調,並且方便使用async await語法糖。廢話不多說,一言不合上代碼。
  • 用一天入門 canvas 和 JavaScript
    HTML canvas 用最簡單的方式,使web 開發者能夠通過JavaScript在網頁上繪製圖形。這樣,HTML 元素變得更加有趣。<canvas> 元素只是個容器,你總是需要使用 JavaScript 來準確繪製圖形。有人可能會說,我們總是可以添加這些點,也可以添加SVG,但這又會多麼有趣?
  • 開發者值得關注的HTML5新特性Canvas
    Canvas使用的是Canvas 2D API去繪製圖形的,這個API功能十分強大,而且大部分的瀏覽器都支持 2D canvas ——包括 Opera, Firefox, Konqueror 和 Safari。而且某些版本的 Opera 還支持 3D canvas ,firefox 也可以通過插件形式支持 3D canvas 。下面馬上來看Canvas的例子。
  • Canvas入門實戰之實現一個圖形驗證碼
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫本文主要介紹用canvas實現圖形驗證碼的一些思路以及如何用javascript面向對象的方式更友好的實現canvas的功能,關於canvas的一些基本使用方法和API我整理了一個思維導圖,大家感興趣的可以參考學習
  • 一個有趣的例子帶你入門canvas
    今天,我們前端群問了一個這樣的問題,然後就開始了激烈的討論。
  • Canvas框架-FabricJS簡介
    簡介Fabric是一個強大而簡單的JS Canvas庫,我們能通過使用它實現在Canvas上創建、填充圖形、給圖形填充漸變顏色。 組合圖形(包括組合圖形、圖形文字、圖片等)等一系列功能。一個簡單的canvas demo通過fabric.Canvas獲取到canvas元素,並可以對canvas進行相應的設置,既可以通過獲取已存在的canvas元素,fabric也支持創建
  • 基於canvas完成圖片裁剪工具
    記得先點web前端學習圈關注我哦~前言本文是基於canvas去實現圖片裁剪工具。因為canvas代碼還是比較長的,儘量寫思路,完整代碼已放在github上。canvas模糊問題這個是寫canvas必定接觸的問題,網上關於這個的答案也到處都是,就不詳細介紹了。
  • HTML5 canvas繪圖基本使用方法
    createPattern():第一參數指定了用做圖案的圖片,必須是文檔中的一個img、canvas或video元素。第二參數通常是repeat,表示採用重複的圖片填充。還可以使用repeat-x、repeat-y、no-repeat。createRadialGradient():用來創建放射狀、圓形漸變對象。
  • 如何用 canvas 畫出分形圖
    ,加上 Canvas 2D 的坐標與常規數據坐標系上下顛倒,我們會花費大量時間在坐標點的計算上。點乘為 a、b 向量點積的幾何含義,是 a 向量乘以 b 向量在 a 向量上的投影分量,如圖 2 所示。叉乘為兩向量組成的面積,如圖 3 所示。
  • 用 Canvas 編織璀璨星空圖
    <canvas height="620" width="1360" id="canvas" style="position: absolute; height: 100%;"/>然後為了讓所有元素沒有間距和內補,我還加了一條全局樣式: * {      margin:
  • File、Blob、dataURL 和 canvas 的應用與轉換
    File(1) 通常情況下, File 對象是來自用戶在一個 input 元素上選擇文件後返回的 FileList 對象,也可以是來自由拖放操作生成的 DataTransfer 對象,或者來自 htmlCanvasElement 上的 mozGetAsFile() API。