Canvas畫布的一些實用技巧

Canvas 畫布, 可能對於大多數人都有點陌生,不過,這個真得是一個酷炫的東西,你真的值得擁有,這是我這兩天用它的時候產生的一種想法~

 

這篇文章主要介紹的在Canvas中圖片展示

 

有沒有想到一種場景,關於圖片展示的,就像某寶的商品詳情頁,當鼠標在圖片上移動的時候,在旁邊的一個區域出現圖片的部分區域放大圖。

 

而實現這個的函數就是  drawImage(params_0 --- params_8)

他的參數最多有九個,最少有三個,具體用法自查,比較簡單,介紹下9個參數時候具體的參數。

dramImage(image,src_X,src_Y,src_width,src_height,des_X,des_Y,des_width,des_height)

image是一個image對象,使用new Image(),創建的對象,需要制定該對象的src,就是你要處理的圖片。

src_X,src_Y 對應的是你image.src指向的圖像上的座標,圖像的左上角座標是(0,0),這兩個參數就是相對於原點的座標。

src_width,src_height是你從你相對原點的位置取得一塊區域。

後面那四個參數你可以類比,哦,對了,des_X,des_Y是相對Canvas原點的位置。

 

然後你就可以開始YY了,其實超簡單的,只是你沒過度過來。^_^

 

監聽鼠標的事件知道吧,用mousemove監聽鼠標在對象上的對應位置(相對位置是算出來的,你可以去瞅瞅怎麼算,挺簡單的)

然後每次把畫布clean了,重畫,可以用clearRect這個方法來搞。

 

大致就介紹到這,你要是有點編程能力或者頭腦,應該差不多能搞定吧。

 

對了 drawImage和clearRect都是基於canvas的繪圖環境的:eg: var canvas = document.getElementById("canvas");  var context = canvas.getContext("2d");//基於context的

 

還是附上代碼吧:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>My Canvas</title>
  6. <style type="text/css" media="screen">
  7. .mycanvas{
  8. display: block;
  9. margin: 0 auto ;
  10. border:1px solid #aaa;
  11. cursor: pointer;
  12. }
  13. .box{
  14. position: absolute;
  15. top:600px;
  16. left: 50%;
  17. }
  18. </style>
  19. <script type="text/javascript">
  20. window.onload = function(){
  21. var canvas = document.getElementById('canvas');
  22. var context = canvas.getContext("2d");
  23. var image = new Image();
  24. image.src = "img.png";
  25. canvas.width = 500;
  26. canvas.height = 500;
  27. image.onload = function(){
  28. context.drawImage(image,0,0,canvas.width,canvas.height);
  29. // canvas.addEventListener('mouseover',getImageHandler,false);
  30. canvas.addEventListener('mousemove',getImageHandler,false);
  31. }
  32. }
  33. function getImageHandler(e){
  34. var x = e.clientX;
  35. var y = e.clientY;
  36. console.log("x:"+x+" y:"+y);
  37. var box = document.getElementById("box");
  38. var boxcontext = box.getContext("2d");
  39. boxcontext.width =200;
  40. boxcontext.height = 200;
  41. var image = new Image();
  42. image.src = "img.png";
  43. boxcontext.clearRect(0,0,0,0);
  44. boxcontext.drawImage(image,x-e.target.offsetLeft,y-e.target.offsetTop,100,100,0,0,200,200);
  45. }
  46. </script>
  47. </head>
  48. <body>
  49. <canvas id="canvas" class="mycanvas">
  50. </canvas>
  51. <canvas id="box" class="box">
  52. </canvas>
  53. </body>
  54. </html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章