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>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值