用HTML5 Canvas API中的clearRect()方法實(shí)現(xiàn)橡皮擦功能

在現(xiàn)實(shí)世界中,我們使用畫(huà)筆在畫(huà)板上進(jìn)行繪畫(huà);在html5 canvas中,我們同樣可以使用canvas的畫(huà)筆——CanvasRenderingContext2D對(duì)象在canvas上進(jìn)行繪畫(huà)。眾所周知,我們的畫(huà)筆一般都會(huì)與橡皮擦配套使用,以便于糾正繪畫(huà)過(guò)程中的錯(cuò)誤并重新繪畫(huà)。在html5 canvas中,CanvasRenderingContext2D對(duì)象也同樣給我們提供了一個(gè)可以永遠(yuǎn)重復(fù)使用的橡皮擦——clearRect()方法。
- clearRect(x, y, width, height)
CanvasRenderingContext2D對(duì)象的clearRect()方法用于清除canvas內(nèi)以指定坐標(biāo)點(diǎn)(x,y)為左上角、寬度為width、高度為height的矩形區(qū)域中的所有圖形像素。
下面,我們來(lái)看一個(gè)實(shí)際的例子。我們先繪制一個(gè)半徑為50px的實(shí)心圓,然后使用橡皮擦clearRect()對(duì)其中的局部區(qū)域進(jìn)行擦除。繪制圓形的原始html5代碼如下:
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>使用HTML5 clearRect()擦除指定的矩形區(qū)域的入門(mén)示例</title>
- </head>
- <body>
- <!-- 添加canvas標(biāo)簽,并加上紅色邊框以便于在頁(yè)面上查看 -->
- <canvas id="myCanvas" width="400px" height="300px" style="border: 1px solid red;">
- 您的瀏覽器不支持canvas標(biāo)簽。
- </canvas>
- <script type="text/javascript">
- //獲取Canvas對(duì)象(畫(huà)布)
- var canvas = document.getElementById("myCanvas");
- //簡(jiǎn)單地檢測(cè)當(dāng)前瀏覽器是否支持Canvas對(duì)象,以免在一些不支持html5的瀏覽器中提示語(yǔ)法錯(cuò)誤
- if(canvas.getContext){
- //獲取對(duì)應(yīng)的CanvasRenderingContext2D對(duì)象(畫(huà)筆)
- var ctx = canvas.getContext("2d");
- //繪制一個(gè)以坐標(biāo)點(diǎn)(100,10)為圓心、半徑為50px的圓形
- ctx.arc(100, 100, 50, 0, Math.PI * 2, false);
- //繪制并填充圓形內(nèi)部
- ctx.fill();
- }
- </script>
- </body>
- </html>
對(duì)應(yīng)的顯示效果如下:
現(xiàn)在,我們使用clearRect()方法對(duì)實(shí)心圓中以圓心(100,100)為中心,周邊各10px的矩形區(qū)域部分進(jìn)行擦除。
- <script type="text/javascript">
- //獲取Canvas對(duì)象(畫(huà)布)
- var canvas = document.getElementById("myCanvas");
- //簡(jiǎn)單地檢測(cè)當(dāng)前瀏覽器是否支持Canvas對(duì)象,以免在一些不支持html5的瀏覽器中提示語(yǔ)法錯(cuò)誤
- if(canvas.getContext){
- //獲取對(duì)應(yīng)的CanvasRenderingContext2D對(duì)象(畫(huà)筆)
- var ctx = canvas.getContext("2d");
- //繪制一個(gè)以坐標(biāo)點(diǎn)(100,10)為圓心、半徑為50px的圓形
- ctx.arc(100, 100, 50, 0, Math.PI * 2, false);
- //繪制并填充圓形內(nèi)部
- ctx.fill();
- //擦除矩形區(qū)域內(nèi)的圖形
- ctx.clearRect(90, 90, 20, 20);
- }
- </script>
對(duì)應(yīng)的顯示效果如下(是不是有點(diǎn)像一個(gè)銅錢(qián)?)。
頁(yè)面上我們可以擦除一片頁(yè)面上的區(qū)域,讓其顯示出背景圖片。
下面的例子中我們擦除了矩形中的空白讓其顯示頁(yè)面背景:
- <!DOCTYPE html>
- <html lang="zh">
- <head>
- <meta charset="UTF-8">
- <title>clearRect()</title>
- <style>
- body { background: url("./images/bg2.jpg") repeat; }
- #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }
- </style>
- </head>
- <body>
- <div id="canvas-warp">
- <canvas id="canvas">
- 你的瀏覽器居然不支持Canvas?!趕快換一個(gè)吧??!
- </canvas>
- </div>
- <script>
- window.onload = function(){
- var canvas = document.getElementById("canvas");
- canvas.width = 800;
- canvas.height = 600;
- var context = canvas.getContext("2d");
- context.fillStyle = "#FFF";
- context.fillRect(0,0,800,600);
- //清空畫(huà)布
- context.clearRect(0,0,canvas.width,canvas.height);
- };
- </script>
- </body>
- </html>
相關(guān)文章
- 這篇文章主要介紹了HTML5 Canvas繪制文本及圖片的基礎(chǔ)教程, 通過(guò)Canvas我們就可以用JavaScript制作出程序代碼可以輕松控制的文本和圖片數(shù)據(jù),需要的朋友可以參考下2016-03-14
通過(guò)HTML5 Canvas API繪制弧線和圓形的教程
這篇文章主要介紹了通過(guò)HTML5 Canvas API繪制弧線和圓形的教程,用JavaScript可以自定義弧度以及設(shè)定起始終末點(diǎn),使用JavaScript需要的朋友可以參考下2016-03-14借助HTML5 Canvas來(lái)繪制三角形和矩形等多邊形的方法
這篇文章主要介紹了借助HTML5 Canvas來(lái)繪制三角形和矩形等多邊形的方法,通過(guò)文章開(kāi)頭給的一些屬性及下面三角形和矩形的例子,同理便可得出其他多邊形的畫(huà)法,需要的朋友可以2016-03-14- 這篇文章主要介紹了使用HTML5 Canvas繪制直線或折線等線條的方法講解,通過(guò)Canvas API我們便可以輕松地使用JavaScript來(lái)操作圖形的位置坐標(biāo),需要的朋友可以參考下2016-03-14
HTML5 canvas實(shí)現(xiàn)移動(dòng)端上傳頭像拖拽裁剪效果
這篇文章主要為大家詳細(xì)介紹了HTML5 canvas實(shí)現(xiàn)移動(dòng)端上傳頭像拖拽裁剪效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-03-14html5 canvas移動(dòng)瀏覽器上實(shí)現(xiàn)圖片壓縮上傳
這篇文章主要為大家詳細(xì)介紹了html5 canvas移動(dòng)瀏覽器上實(shí)現(xiàn)圖片壓縮上傳的相關(guān)方法,提出了解決方法,分享了解決問(wèn)題的思路,感興趣的小伙伴們可以參考一下2016-03-11html5 canvas實(shí)現(xiàn)跟隨鼠標(biāo)旋轉(zhuǎn)的箭頭
這篇文章主要為大家詳細(xì)介紹了html5 canvas實(shí)現(xiàn)跟隨鼠標(biāo)旋轉(zhuǎn)的箭頭,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-03-11HTML5 canvas實(shí)現(xiàn)雪花飄落特效
這篇文章主要為大家詳細(xì)介紹了HTML5 canvas實(shí)現(xiàn)雪花飄落特效,效果實(shí)現(xiàn)引人入勝,很逼真的動(dòng)畫(huà)效果,感興趣的小伙伴們可以參考一下2016-03-08HTML5+Canvas實(shí)現(xiàn)日期圓形時(shí)鐘特效源碼
HTML5+Canvas實(shí)現(xiàn)日期圓形時(shí)鐘特效源碼是一款可以全屏漂浮,帶有日期星期顯示的時(shí)鐘代碼,外觀非常漂亮,需要的朋友前來(lái)下載源碼2016-03-07HTML5 Canvas實(shí)現(xiàn)煙花綻放特效
這是一個(gè)款絢麗的HTML5 Canvas動(dòng)畫(huà),它將模擬的是我們生活中煙花綻放的動(dòng)畫(huà)特效,效果非常逼真,下面我們來(lái)簡(jiǎn)單分析一下實(shí)現(xiàn)這款HTML5煙花特效的過(guò)程及代碼,感興趣的小伙2016-03-02