vue 鼠标拖动画矩形

阅读: 评论:0

vue 鼠标拖动画矩形

vue 鼠标拖动画矩形

最近做项目遇到一个需求,对图片进行拖动+缩放,本来这个功能直接采用viewerjs这个插件就可以实现的。

但是我们还有其他需求啊,在底层图片上添加一些图片或者文字注释,并且随着底层图片的拖动和缩放后,其相对位置不能发生改变,因此选择了用canvas解决,毕竟x,y坐标在那里,敌动我也动。

定义canvas,解决绘制图片模糊的问题

这里注意一下,canvas有自身的width、height和style里面的width、height,这两者是不同的 。

敲黑板: canvas的width、height是canvas实际的宽高,而style里面设置的width、height是被浏览器渲染的宽高。如果我们不设置style宽高,那么canvas会默认将一个逻辑单位映射到一个像素。

但是一般浏览器都是两个像素点映射称一个像素的,所以为了保证图片不模糊,简单的将画布的大小设置成了浏览器渲染大小的一半(这个有更精确的方法,可以自己去百度)。

实现图片渲染

在data中定义一些参数,按需定义

//定义需要渲染的图片数组

canvasWidth: 2400, // 画布大小

canvasHeight: 1400,

myCanvas: null,

ctx: null,

imgX: 200, // 图片在画布中渲染的起点x坐标,这个坐标为后期的添加注释图片、文字位置提供了相对坐标点

imgY: 100,

imgScale: 0.9, // 图片启示的缩放大小

extraImgList: [ {url:require("@public/images/dashboard/labor3.png"), x: 0, y: 0, width: 2400, height: 1400},

{url:require("@public/images/icon-menu-2.png"), x: 700, y: 100, width: 40, height: 40}

],

imgObject: [], // 存放预加载好了的图片对象

在mounted中获取到canvas对象,并调用方法

mounted() {

< = Context('2d');

this.loadImg();

this.canvasEventsInit();

},

实现函数:

图片预加载

loadImg() {

var _this = this;

let extraImgList = _aImgList;

let length = extraImgList.length;

var imageList = [];

let count = 0;

//加载底层图片,这个先后顺序一定要有,不然用来注释的图片可能会被底层图片覆盖

var isBgLoaded = false;

var img = new Image();

var bgImg = extraImgList[0];

img.src = bgImg.url;

本文发布于:2024-02-26 23:38:30,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/1730761594481130.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:鼠标   矩形   拖动   vue
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23