Canvas的应用,图片的移动、旋转、缩放
2017-01-13 16:00
375 查看
Canvas的应用,图片的移动、旋转、缩放
借助Canvas类库(zrender)实现对图片的拖拽,旋转,缩放效果图如下:
代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Zrender</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script src="jquery-2.1.1/jquery.min.js"></script> <script src="zrender/asset/js/esl/esl.js"></script> <style type="text/css"> #mainCanvas{ margin: 0 auto; height: 800px; width: 800px; min-height: 800px; min-width: 800px; } </style> </head> <body> <div class="container-fluid"> <div class="col-sm-9 col-sm-offset-12 col-md-10 col-md-offset-2 "> <div id="mainCanvas" class="mainCanvas">正在加载中...</div> </div> </div> <script type="text/javascript"> var zr; // 全局可用zrender对象 var zArea; //区域 var domMain = document.getElementById('mainCanvas'); require.config({ packages: [ { name: 'zrender', location: 'zrender/src', main: 'zrender' } ] }); require( [ 'zrender', 'zrender/config', 'zrender/Storage', 'zrender/tool/area', 'zrender/tool/color', 'zrender/animation/Animation', 'zrender/shape/Star', 'zrender/shape/Circle', 'zrender/shape/Image', 'zrender/shape/Ring', 'zrender/shape/BezierCurve' ], function(zrender, config, Storage, Area, color, Animation, StarShape, CircleShape, ImageShape,RingShape,BezierCurveShape){ // zr = zrender.init( document.getElementById('mainCanvas') ); //背景底图 zr.addShape(bgimage = new ImageShape({ style : { image : "bottom1.png", x : 0, y : 0, width : 800, height : 800, lineWidth : 0 }, hoverable : false })); zr.addShape(ring_shape = new RingShape({ style: { x: 400, y: 400, r0: 165, r :380, brushType : 'both', color : 'rgba(220, 20, 60, 0)', // rgba supported //strokeColor : color.getColor(5), // getColor from default palette lineWidth : 1, textPosition :'inside' } })); //添加图片(上图中为了显示效果添加了5张图片,下面代码中只有一次) var rotationPI = Math.PI / 180; //旋转角度 var origin = 1.1; zr.addShape(testimg = new ImageShape({ style : { x : 400, y : 400, image : "jy.png", width : 80, height : 80 }, draggable : true, clickable : true, onmousewheel: function(params){ //拖动 var eventTool = require('zrender/tool/event'); var delta = eventTool.getDelta(params.event); var imgx = params.target.style.x; //图片位置 x var imgy = params.target.style.y; //图片位置 y var imgw = params.target.style.width; //图片宽度 width var imgh = params.target.style.height; //图片高度 height origin += (delta > 0 ? 1 : -1) * 0.1; zr.modShape(params.target.id, {scale : [origin, origin, imgx+imgw/2, imgy+imgh/2]}); zr.refresh(); eventTool.stop(params.event); }, onclick : function(params){ var imgx = params.target.style.x; //图片位置 x var imgy = params.target.style.y; //图片位置 y var imgw = params.target.style.width; //图片宽度 width var imgh = params.target.style.height; //图片高度 height var x = imgx + imgw/2; var y = imgy + imgh/2; rotationPI = rotationPI > Math.PI * 2 ? rotationPI % (Math.PI * 2) : rotationPI; rotationPI += Math.PI * 5 /180; zr.modShape(params.target.id, { rotation: [rotationPI, x, y] }); zr.refresh(); }, ondrift :function( shape, x, y){ console.info(shape); } })); //获取图片 ImageURL = function(){ var ShapeURL = zr.toDataURL(); return ShapeURL; }; } </script> </body> </html>
相关文章推荐
- canvas实现图片缩放、移动、旋转
- web手势库AlloyFinger运用( 控制CANVAS中图片移动、缩放、旋转)
- CANVAS移动、缩放、旋转画入的图片
- HTML5之Canvas绘图——Canvas画布调整之移动、缩放、旋转
- Android开发:对图片的手势操作——旋转、缩放、移动
- 图片拖拽、旋转、缩放、移动
- ImageView里面的图片实现同时移动缩放旋转 photoView自定义
- iOS开发之图片操作,移动,旋转,缩放实例演示
- Android matrix 控制图片的旋转、缩放、移动
- iOS用三个手势和仿射变换实现图片的旋转缩放移动效果(类iBooks教科书)
- 使用HTML5 canvas 标签进行图片裁剪、旋转、缩放
- 一些有关Android图片的操作,判断方向,旋转,根据uri获取绝对路径,缩放与移动
- android 实现图片旋转,移动,缩放,并且记录变化值,用另外一张图片显示出来
- [Android View] 判断是否点中一个动态可旋转、可缩放、可移动的图片
- Android之matrix类控制图片的旋转、缩放、移动
- Android matrix 控制图片的旋转、缩放、移动
- Android matrix 控制图片的旋转、缩放、移动
- 图片处理(旋转,平移,缩放)View---Canvas;Paint;Bitmap
- Android图片查看器(图片可移动、缩放、旋转)
- 图片(旋转/缩放/翻转)变换效果(ccs3/滤镜/canvas)