上繪制img(drawImage())時需要注意的事


<canvas>標簽相當於是一個畫布,css決定畫布的樣式(這塊畫布的背景顏色、大小等),腳本(一般使用JavaScript)就是畫筆,我們可以在這個畫布上繪制線條、形狀、文字、圖片等。

<canvas>標簽對中的內容會在瀏覽器不支持這個標簽的時候(如在IE8以及更舊版本的瀏覽器上啟動)的時候會顯示出來,如果瀏覽器支持該標簽則不會顯示。

繪制圖片和繪制其它內容有些不同,我對繪制圖片的理解就是:將一張圖片復印到這塊畫布上。但我們不能直接畫到這塊畫布上,這是有原因的。

我們先來看繪制圖片代碼的語法:content.dragImage(image,x,y)

image:要繪制的圖片。可以是<i大mg>標簽中的圖片;

x:圖片定位點(左上角)的x軸參數;

y:圖片定位點(左上角)的y周參數;

當然,語法不止這一種,這里就用這個語法來介紹一下使用該方法時要注意的一件事情。

我們先設置好畫布區域和裝圖片的區域,像這樣:

稍微設置了點樣式,讓這兩個區域並排顯示。如果你直接使用drawImage()將右邊的圖像插入到左邊的畫布上,像下面這樣:

 1 <body>
 2     <div id="zone">
 3         <h3>畫布</h3>
 4         <canvas id="huaBu" id="getCanvas">抱歉,您的瀏覽器不支持該標簽</canvas>
 5     </div>
 6     <div id="zone">
 7         <h3>圖像</h3>
 8         <img id="getImg" src="Img.png" style="width:300px;height:170px;" />
 9     </div>
10     
11     <script>
12         var c = document.getElementById("huaBu");
13         var ctx = c.getContext("2d");
14         var img = document.getElementById("getImg");
15         ctx.drawImage(img, 0, 0);    //直接繪制圖片到畫布上
16     </script>
17 </body>

你就會發現,什么事都沒發生。

這是因為網頁中圖片加載是異步加載,圖片還沒有加載完,腳本就執行了,那它就繪制了個還沒加載完的圖像,一片空白。

解決方法也很簡單:腳本在圖片加載完畢后再執行就行了。這個時候就要用到onload事件了。

 1 <body>
 2     <div id="zone">
 3         <h3>畫布</h3>
 4         <canvas id="huaBu" id="getCanvas">抱歉,您的瀏覽器不支持該標簽</canvas>
 5     </div>
 6     <div id="zone">
 7         <h3>圖像</h3>
 8         <img id="getImg" src="Img.png" style="width:300px;height:170px;" />
 9     </div>
10     
11     <script>
12         var c = document.getElementById("huaBu");
13         var ctx = c.getContext("2d");
14         var img = document.getElementById("getImg");
15         
16  img.onload = function() { 17  ctx.drawImage(img, 0, 0);    //在圖片加載完畢后再執行繪制圖片的操作
18  } 19     </script>
20 </body>

這個時候畫布上就繪制了我們指定的圖片:

想要畫布上圖像的大小和原圖一致,修改drawImage()的參數就好啦,比如我這里設置成這樣:

ctx.drawImage(img, 0, 0,300,150);

就一樣了:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM