1. 程式人生 > >學習:Canvas基本用法

學習:Canvas基本用法

前言

接觸svg一段時間了。慢慢的覺得還是要學習一下canvas(其實是看粒子效果都是canvas,svg上加canvas實現粒子效果,所以沒辦法懶了)網上的教程不少還是按個人習慣記錄一下。

Canvas

建立
canvas需要建立後再獲取才能使用

html:(標準)

<canvas></canvas>

d3:(個人習慣)

var canvas_js = document.getElementById('js');
var canvas_d3 = d3.selectAll("#ceshi"
).append("canvas");

關於d3

d3.js v4版本支援canvas。目前還在使用v3版本。所以此處用於記錄其中的各種問題。

上述的d3建立canvas。canvas_d3為d3封裝的物件。使用過d3的應該習以為常的使用下列語法,但是canvas中需要注意是不可取的。因為d3_v3不支援canvas~~~

//建立
var canvas_d3 = d3.selectAll("#ceshi").append("canvas");
canvas_d3.width = 200;//報錯哦。
//個人解決辦法
//1.單個屬性
canvas_d3[0
][0].width = 200; //2.一勞永逸 var canvas_d3 = >d3.selectAll("#ceshi").append("canvas")[0][0]; canvas_d3.width = 200;

基本API

width( ) && height( )

設定寬高

getContext( )

獲取畫布。專業點的說法就是渲染上下文,通過使用 document.getElementById() 方法來為 元素得到DOM物件。一旦有了元素物件,你可以通過使用它的getContext() 方法來訪問繪畫上下文。

//js
var canvasjs = document.getElementById('js');
canvasjs.getContext('2d');
//d3
var canvasd3 = d3.selectAll("body").append("canvas")[0][0];
canvasd3.getContext("2d");

引數:
‘2d’ :初學嘛。只好2D渲染了。

柵格

畫布柵格(canvas grid)太專業了。。。空間座標和d3一致,預設左上角為原點。

繪製基本圖形

矩形
canvas預設支援的圖形只有矩形,並提供三種繪製矩形API。

fillRect(x,y,width,height):填充
strokeRect(x,y,width,height)邊框

需要注意的是:邊框線預設寬度2px;且向邊外擴充1px;就是說我在(20,20)處畫了一個80*80的邊框矩形,但是實際顯示區域是(19,19)處起線寬2px,內部79*79的矩形。

clearRect(x,y,width,height)清除
程式碼
//ctx_js
//繪製填充矩形
ctx_js.fillRect(20, 20, 80, 80);
//繪製矩形的邊框
ctx_js.strokeRect(120, 20, 80, 80);
//清除一個矩形區域
ctx_js.clearRect(70, 20, 80, 80);
//
//ctx_d3
//繪製填充矩形
ctx_d3.fillRect(20, 20, 80, 80);
//繪製矩形的邊框
ctx_d3.strokeRect(120, 20, 80, 80);
//清除一個矩形區域
ctx_d3.clearRect(70, 20, 80, 80);
語法基本一致了,之後就不做區別了

繪製路徑

基本步驟

beginPath():建立起點
畫圖命令畫出路徑
closePath:封閉路徑,組合圖形時,多個獨立路徑一定要閉合後再繪製新的路徑,或者在路徑命令中閉合
fill()或stroke():路徑生成後,可以通過描邊(stroke)或者填充(fill)來渲染圖形

畫圖命令

**線**lineTo(x,y);
**圓**arc(x,y,radius,startAngle,endAngle,anticlockwise);
**貝塞爾曲線**quadraticCurveTo(cp1x,cp1y,x,y);

Path2D()
路徑物件

相關推薦

學習Canvas基本用法

前言 接觸svg一段時間了。慢慢的覺得還是要學習一下canvas(其實是看粒子效果都是canvas,svg上加canvas實現粒子效果,所以沒辦法懶了)網上的教程不少還是按個人習慣記錄一下。

一站式學習Wireshark(一)Wireshark基本用法

11g 實現 alt href ascii 根據 無線網絡 完成 analyze 按照國際慣例,從最基本的說起。 抓取報文: 下載和安裝好Wireshark之後,啟動Wireshark並且在接口列表中選擇接口名,然後開始在此接口上抓包。例如,如果想要在無線網絡上抓取流量

Canvas 基本用法學習筆記

Canvas 直面意思是畫布,其實是分裝的一個工具類 一個Canvas類物件有四大基本要素 1、一個是用來儲存畫素的bitmap  -----  畫板 2、一個Canvas在Bitmap上進行繪製操作 ---- 畫布或者畫紙(Layer---saveLayer操作時,新建一

黃聰ffmpeg基本用法(轉)

sca wid cal ner aspect mp4 動態文本 tegra 控制輸出 FFmpeg FFmpeg 基本用法 本課要解決的問題 1.FFmpeg的轉碼流程是什麽? 2.常見的視頻格式包含哪些內容嗎? 3.如何把這些內容從視頻文件中抽取出來? 4.如

《Java從入門到放棄》入門篇springMVC基本用法

java springmvc springMVC可以理解成用來做數據顯示處理的框架,主要內容就是控制器和視圖的處理。在已經安裝了spring框架的基礎上繼續下面的步驟(我使用的MyEclipse2014)。 1. 修改web.xml文件 2. 在WEB-INF目錄創建springmvc的配

知識點Mysql 基本用法之函數

select查詢 bar 基本用法 for lower www 順序 test ber 函數 MySQL中提供了許多內置函數 例如: sql 內置函數: 一、數學函數 ROUND(x,y) 返回參數x的四舍五入的有y位小數的值

知識點Mysql 基本用法之存儲過程

rollback word tar for from iam tin ack -- 存儲過程 一、 介紹 存儲過程包含了一系列可執行的sql語句,存儲過程存放於MySQL中,通過調用它的名字可以執行其內部的一堆sql 使用存儲過程的優點: 用於替代程序寫的SQL語句,實

06 awk基本用法 awk高階應用 總結和答疑

Top NSD SHELL DAY06 案例1:使用awk提取文字 案例2:awk處理條件 案例3:awk綜合指令碼應用 案例4:awk流程控制 案例5:awk擴充套件應用 1 案例1:使用awk提取文字 1.1 問題 本案例要求使用awk

Elasticsearch入門三Elasticsearch基本用法-增刪改查(譯)

title: Elasticsearch入門三:Elasticsearch基本用法-增刪改查(譯) date: 2018-11-01 11:00:00 tags: Elasticsearch 原文地址: https://www.elastic.co/guide/en/elast

GitHub使用入門(二)Git基本用法

GitHub中的主要命令和用法都是在Git中完成的,所以我們有必要了解Git的基本語法和規則。下面來介紹一下: 基本操作 git init:初始化倉庫 必須先要進行初始化倉庫才能進行版本控制,下面我們就來實際進行初始化倉庫。 $ mkdir git-tut

linux-基礎學習find的用法

查詢檔案 find ./ -type f 查詢目錄 find ./ -type d 查詢名字為test的檔案或目錄 (*) find ./ -name test 查詢名字符合正則表示式的檔案,注意前面的‘.*’(查詢到的檔案帶有目錄) find ./ -rege

python除錯pdb基本用法(轉)

轉自IBM開發者社群。 使用pdb進行除錯: pdb 是 python 自帶的一個包,為 python 程式提供了一種互動的原始碼除錯功能,主要特性包括設定斷點、單步除錯、進入函式除錯、檢視當前程式碼、檢視棧片段、動態改變變數的值等。pdb 提供了一些常用的除錯命令,詳情見表 1。

ROS學習之tf基本用法

主要細節參見wiki,這裡我寫一下它的broadcaster和listener做個記錄: tf_broadcaster.cpp: #include<ros/ros.h> #include<tf/transform_broadcaster.h> in

python實戰筆記之(13)Scrapy基本用法例項講解

Scrapy是一個非常強大的非同步爬蟲框架,它已經給我們寫好了許許多多的元件,使用Scrapy我們只用關心爬蟲的邏輯就好了。本文通過一個簡單的專案瞭解一下Scrapy的爬取流程,對Scrapy的基本用法也有一個大體的瞭解。 一、目標站點分析 Scrapy提供了一個官方抓取

Go語言學習01-基本語法

[TOC] 基本語法 === 原始檔構成 --- 最簡單的一個go程式: ```go package main import "fmt" func main() { fmt.Println("Hello, World!") } ``` Go源程式由幾部分構成: 1. `package`

《Javascript 高階程式設計(第三版)》筆記0x1B 使用 Canvas 繪圖基本用法,2D上下文

目錄 基本用法 2D 上下文     填充和描邊     繪製矩形     繪製路徑     繪製文字     變換

JUnit學習筆記(一)基本用法

JUnit學習筆記(一):基本用法 JUnit是Java的單元測試框架。JUnit提倡“先測試後編碼”的理念,強調建立測試資料的程式碼,可以先測試,再應用。 框架的特點:     JUnit

numpy學習筆記一numpy的基本用法

    numpy是python中的一個擴充套件包,它支援以向量的方式進行高密度的計算,由於其底層採用C++實現,因此具有比較高的效率。為了安裝簡便,可以直接使用WinPython進行安裝,缺點就是每次使用時需要在方法前加入包名。     相對於Python自帶的list物

java基礎運算符的基本用法

自增 另一個 stat 不同 兩個 流程 ava -- 個數 運算符: 就是對常量和變量進行操作的符號。 算數運算符: A:+,-,*,/,%,++,-- B:+的用法 a:加法 b:正號 c:字符串連接符 C:/和%的區別 數據做除法操作的時候,/取得是商

Python學習基本數據類型與變量(中)與基礎之條件及循環(上)

sets 但是 while循環 spl view put 算數運算 sse 邏輯運算 一.數據類型和變量 1.可變與不可變數據類型   可變數據類型:在id不變的情況下,數據類型內部的元素可以改變   列表   字典   不可變數據類型:value改變,id也跟著改變