Canvas&正則表達式

来源:http://www.cnblogs.com/luozhijian0120/archive/2016/10/30/6014075.html
-Advertisement-
Play Games

正則表達式 var str='test' var reg=/^test$/ var result=reg.test (str) // 需要檢測的目標 console.log(result) //ture var str='test' var reg=/^test$/ var result=reg.t ...


正則表達式

           
var str='test'
var reg=/^test$/
var result=reg.test          (str)
//                       需要檢測的目標
console.log(result)               //ture
 

Canvas

什麼是Canvas

<canvas>是 HTML5 新增的元素,可使用JavaScript腳本來繪製圖形。

<canvas是一個矩形區域,您可以控制其每一像素。

引入Canvas

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

<canvas> 看起來和 <img> 元素很相像,唯一的不同就是它並沒有 srcalt 屬性。實際上,<canvas> 標簽只有兩個屬性—— widthheight,並且這些屬性都是可選的。

width 和 height 屬性

當沒有設置寬度和高度的時候,canvas 會初始化寬度為300像素和高度為150像素。該元素可以使用CSS來定義大小,但在繪製時圖像會伸縮以適應它的框架尺寸:如果CSS的尺寸與初始畫布的比例不一致,它會出現扭曲。

           
*註意*: 如果你繪製出來的圖像是扭曲的, 嘗試在<canvas>的屬性中明確規定寬和高,而不是使用CSS。
 

相容性

某些較老的瀏覽器(尤其是IE9之前的IE瀏覽器)或者文本瀏覽器不支持HTML元素"canvas",在這些瀏覽器上會把<canvas>標簽內部的內容顯示出來,因此我們可以在這些不支持<canvas>的瀏覽器上提供一些替代內容,而支持<canvas>的瀏覽器將會忽略在容器中包含的內容,並且只是正常渲染canvas。

           
<canvas id="myCanvas" width="150" height="150">
  如果您的瀏覽器不支持Canvas,那麼您將看到本行文字
</canvas>
 

</canvas> 標簽不可省

與 <img> 元素不同,<canvas> 元素需要結束標簽(</canvas>).如果結束標簽不存在,則文檔的其餘部分會被認為是替代內容,將不會顯示出來。

獲取繪圖上下文(the rendering context)

canvas起初是空白的.如果想要對canvas進行一些操作,那麼則需要獲取canvas的繪圖上下文對象。<canvas> 元素有一個做 getContext() 的方法,這個方法是用來獲得渲染上下文和它的繪畫功能。getContext()只有一個參數,上下文的格式.對於2D圖像而言,這個格式參數是"2d"

           
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
 

如果在不支持<canvas>的瀏覽器中運行了上述代碼,會拋出一個錯誤.所以在我們獲取繪圖上下文對象之前,應該先檢查一下瀏覽器對該特性的支持情況。

           
var canvas = document.getElementById('tutorial');
if (canvas.getContext){
  var ctx = canvas.getContext('2d');
  // drawing code here
} else {
  // canvas-unsupported code here
}
 

基本繪圖操作

和Windows操作系統自帶的畫圖程式一樣,Canvas的兩種基本繪圖操作是填充和描邊。填充,就是用指定的樣式(顏色、漸變或圖像)填充圖形;描邊,就是只在圖形的邊緣畫線。填充和描邊的樣式分別取決於兩個屬性:fillStylestrokeStyle。這兩個屬性的值可以是字元串、漸變對象或模式對象,而且它們的預設值都是"#000000"。如果為它們指定表示顏色的字元串值,可以使用 CSS 中指定顏色值的任何格式,包括顏色名、十六進位碼、 rgb、rgba、hsl 或 hsla。

繪製矩形

矩形是唯一一種可以直接在 2D 上下文中繪製的形狀.與矩形有關的方法包括 fillRect()strokeRect()clearRect()。這三個方法都能接收 4 個參數:矩形的 x 坐標、矩形的 y 坐標、矩形寬度和矩形高度。這些參數的單位都是像素。

填充矩形

fillRect(x, y, width, height)

繪製矩形描邊

strokeRect(x, y, width, height)

清除矩形

           
該方法的功能類似於Windows系統中畫圖程式的橡皮擦,會將指定矩形矩形區域中的所有內容全部清除。
 

clearRect(x, y, width, height)

繪製路徑

如果要繪製矩形以外的形狀,則需要自定義繪製路徑。2D 繪製上下文支持很多在畫布上繪製路徑的方法。要繪製路徑,首先必須調用 beginPath()方法,表示要開始繪製新路徑。然後,再通過調用下列方法來實際地繪製路徑。

arc(x, y, radius, startAngle, endAngle, counterclockwise)

(x,y)為圓心繪 制一條弧線,弧線半徑為 radius,起始和結束角度(用弧度表示)分別為 startAngleendAngle。最後一個參數表示 startAngleendAngle 是否按逆時針方向計算,值為 false 表示按順時針方向計算。

arcTo(x1, y1, x2, y2, radius)

從上一點開始繪製一條弧線,到(x2,y2)為止,並且以 給定的半徑 radius 穿過(x1,y1)

bezierCurveTo(c1x, c1y, c2x, c2y, x, y)

從上一點開始繪製一條三次方貝塞爾曲線,到(x,y)為止,並且以(c1x,c1y)(c2x,c2y)為控制點。

lineTo(x, y)

從上一點開始繪製一條直線,到(x,y)為止。

moveTo(x, y)

將繪圖游標移動到(x,y),不畫線。

quadraticCurveTo(cx, cy, x, y)

從上一點開始繪製一條二次貝塞爾曲線,到(x,y)為止,並且以(cx,cy)作為控制點。

rect(x, y, width, height)

從點(x,y)開始繪製一個矩形,寬度和高度分別由 widthheight 指定。這個方法繪製的是矩形路徑,而不是 strokeRect()fillRect() 所繪製的獨立的形狀。

創建了路徑後,接下來有幾種可能的選擇。如果想繪製一條連接到路徑起點的線條,可以調用 closePath()。如果路徑已經完成,你想用 fillStyle 填充它,可以調用 fill() 方法。另外,還可 以調用 stroke() 方法對路徑描邊,描邊使用的是 strokeStyle。最後還可以調用 clip(),這個方法可以在路徑上創建一個剪切區域。

           
繪製一個簡易時鐘
             
var canvas = document.getElementById("canvas");
//確定瀏覽器支持元素 
if (canvas.getContext){
    var context = canvas.getContext("2d");
    //開始路徑
    context.beginPath();

    //繪製外圓
    context.arc(100, 100, 99, 0, 2 * Math.PI, false);

    //繪製內圓
    context.moveTo(194, 100);
    context.arc(100, 100, 94, 0, 2 * Math.PI, false);

    //繪製分針
    context.moveTo(100, 100);
    context.lineTo(100, 15);

    //繪製時針
    context.moveTo(100, 100);
    context.lineTo(35, 100);

    //描邊路徑
    context.stroke();
}
 

繪製文本

繪製文本主要有兩個方法:fillText()strokeText()。這兩個方法都可以接收 4 個參數:要繪製的文本字元串、x 坐標、y 坐標和可選的最大像素寬度。

而繪製出來文本的樣式,由下麵3個屬性決定:

font

表示文本樣式、大小及字體,用 CSS 中指定字體的格式來指定,例如"10px Arial"

textAlign

表示文本對齊方式。可能的值有 "start""end""left""right""center"。建議使用 "start""end",不要使用 "left""right",因為前兩者的意思更穩妥,能同時適合從左到右和從右到左顯示(閱讀)的語言。

textBaseline

表示文本的基線。可能的值有 "top""hanging""middle""alphabetic""ideographic""bottom"

           
context.font = 'bold 14px Arial';
context.textAlign = 'center';
context.textBaseline = 'middle';
context.fillText('hello, world', 100, 100);
 

 


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

-Advertisement-
Play Games
更多相關文章
  • 作者:var dump鏈接:https://zhuanlan.zhihu.com/p/23300328最近要做一個基於Java C/S架構的項目,主要涉及許可權管理這方面的東西。瞭解到Apache Shiro適合做這個。其官網上教程寫的很好,打算把這些教程翻譯成英文,這是第一篇。 Apache shi ...
  • Spring經過大神們的構思、編碼,日積月累而來,所以,對其代碼的理解也不是一朝一夕就能快速完成的。源碼學習是枯燥的,需要堅持!堅持!堅持!當然也需要技巧,第一遍學習的時候,不用關註全部細節,不重要的代碼可以先忽略掉,達到理解大體的架子及流程,避免第一次就陷入某個坑裡出不來。第二遍針對某個流程更深入 ...
  • 這是一個計數鎖,說白了,就是當你上鎖的時候,只有計數減少到0的時候,才會釋放鎖 結果 ...
  • 接入層session設計原則: 1、Session—讀寫請求使用的上下文對象,稱之會話。 業務總有狀態的:用戶下單購買、登錄狀態、好友狀態、消息發送情況等; 這些有狀態的信息隨用戶操作變化。 單機環境下: 集群設計: --session複製: 所有接入層伺服器之間同步session數據; 每台接入服 ...
  • 作為一個初級開發者,可能不會接觸到代理模式,但是在很多框架的使用中都不知不覺使用了代理模式,比如servlet的過濾器鏈,spring的AOP,以及spring mvc的攔截器等。所以瞭解代理模式對於個人的成長是不可避免的。 在某些情況下,一個客戶不想或者不能直接引用一個對象,此時可以通過一個稱之為 ...
  • 一直認為原型鏈太過複雜,尤其看過某圖後被繞暈了一整子,今天清理硬碟空間(渣電腦),偶然又看到這圖,勾起了點回憶,於是索性複習一下原型鏈相關的內容,表達能力欠缺邏輯混亂別見怪(為了防止新人__(此處指我)__被在此繞暈,圖片就放在末尾了。) 以下三點需要謹記 1.每個對象都具有一個名為__proto_ ...
  • 在JavaScript中一共有4種調用模式: 函數調用模式 方法調用模式 構造器調用模式 間接調用模式,通過call()和apply()進行 1. 函數調用模式 普通函數調用模式,如: 在一個調用中, (1)每個參數表達式計算的結果作為實參傳遞給聲明函數時定義的形參; (2)this被綁定到全局變數 ...
  • 一、Float的特性 1. 應用於文字圍繞圖片 2. 創建一個塊級框 3. 多列浮動佈局 4. 浮動元素的寬度、高度自適應,但可以設置其值。 二、核心解決的問題 文字圍繞圖片:img標簽與多個文本標簽放置在一個容器中,如果img浮動,文本標簽會圍繞圖片。 2.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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...