canvas繪畫基礎(一):認識canvas畫布

来源:http://www.cnblogs.com/yangtoude/archive/2017/07/01/html5-canvas-base.html
-Advertisement-
Play Games

html5提供了一個<canvas>標簽,結合javascript的canvas api介面可以用來繪製圖形和動畫。最近工作中涉及到畫圖的任務,下麵來瞭解一下canvas的基礎:canvas畫布。 1,canvas(畫布)的width和height 上面的代碼中放置了兩個canvas畫布,一副圖片, ...


html5提供了一個<canvas>標簽,結合javascript的canvas api介面可以用來繪製圖形和動畫。最近工作中涉及到畫圖的任務,下麵來瞭解一下canvas的基礎:canvas畫布。

 1 <style type="text/css">
 2 body {padding: 40px 0 0 40px;}
 3 #canvas1,#canvas2 {background: #ff0000; opacity: 0.1; margin: auto;}
 4 </style>
 5 
 6     <div class="wrap">
 7         <canvas id="canvas1"></canvas>
 8         <canvas id="canvas2"></canvas>
 9     </div>
10     <div class="wrap">
11         <img id="img" src="../../images/blue-300x150.png" alt="圖片">
12     </div>

1,canvas(畫布)的width和height

上面的代碼中放置了兩個canvas畫布,一副圖片,可以看到canvas標簽和img標簽一樣都是內聯元素,canvas也有width和height屬性,可以指定它的寬高,如果不指定預設為300x150。

這裡需要註意的是,如果用css樣式來指定canvas標簽的寬高,那麼canvas畫布中的圖形在渲染時進行相應的縮放(變形)以適應標簽的寬高,所以不要用css樣式來指定畫布的寬高,而是顯示的通過設置canvas的width和height來指定畫布的寬高。

 2,畫布柵格和坐標空間

canvas預設被柵格(網格)覆蓋,一般來說(畫布沒有被壓縮或拉伸)一個網格代表canvas中的一個像素。二維的canvas畫佈有一個原點,預設的位置位於畫布的左上角:

這和數學中常用的直角坐標系略有不同,它的y軸正方向是朝下的,這同時也影響了畫布中象限角的分佈,30度位於x軸的下方而不是上方,在畫圖時需要註意。不過canvas畫布是可以旋轉的,而且原點也是可以移動的。

參考:

Canvas教程

<canvas>標簽

 


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

-Advertisement-
Play Games
更多相關文章
  • 首先介紹一下概念 devicePixelRatio其實指的是window.devicePixelRatio window.devicePixelRatio是設備上物理像素和設備獨立像素(device-independent pixels (dips))的比例。 公式表示就是:window.devic ...
  • 起因:最近在學習做網頁,需要不停地調試js ,然後呢就遇到一個問題:修改了外部引入的js文件,但是刷新頁面卻看不到效果,原因是因為瀏覽器緩存了js文件,瀏覽器優先讀取的是緩存的js 文件,而不是從每次都從服務端獲取 解決辦法:禁止js緩存 ...
  • [1]實現原理 [2]媒體查詢 [3]基本用法 [4]列偏移 [5]列排序 [6]列嵌套 [7]複雜應用 [8]顯示隱藏 ...
  • 塊級元素和行內元素的三個區別 1.行內元素與塊級元素直觀上的區別: 行內元素會在一條直線上排列,都是同一行,水平方向排列 塊級元素獨占一行,垂直方向排列.塊級元素從新行開始結束接著一個斷行 2.塊級元素可以包含行內元素和塊級元素, 行內元素不能包含塊級元素 3.行內元素和塊級元素屬性的不同,主要是盒 ...
  • 一、實現思路 在實踐中後臺管理系統的前後端分離時,往往會因為業務量的增加使其前端項目難以維護,以及打包時間不理想,還有業務系統與框架之間區分不在明顯。本文是本人從另一個角度提出的一種解決方案,希望各位提出寶貴的建議。 二、創建步驟 2.1、github上新建組織 此部分的操作可以參考github的相 ...
  • HTML5 DOM 為 <audio> 和 <video> 元素提供了方法、屬性和事件。 這些方法、屬性和事件允許您使用 JavaScript 來操作 <audio> 和 <video> 元素。 ·首先帶大家熟悉一下video標簽的屬性方法,根據屬性方法做一個小demo, HTML5支持的視頻格式: ...
  • 本文總結一下瀏覽器在 javascript 的載入方式。 關鍵詞:非同步載入(async loading),延遲載入(lazy loading),延遲執行(lazy execution),async 屬性, defer 屬性 一、同步載入與非同步載入的形式 1. 同步載入 我們平時最常使用的就是這種同步 ...
  • 這類的東西網上一搜就是大把的,看著比較空曠的博客,所以自己也來寫一個。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...