当前位置: 首页 > news >正文

泉州做网站seo东莞响应式网站

泉州做网站seo,东莞响应式网站,如何设计网站logo,旅行社网站制作简介 标注平台很关键的一点#xff0c;对于整个图片为底图的画布#xff0c;需要支持缩放、拖拽#xff0c;并且无论画布位置在哪里#xff0c;大小如何#xff0c;所有绘制的点、线、面的坐标都是相对于图片左上角的#xff0c;并且#xff0c;拖拽、缩放#xff0c;… 简介 标注平台很关键的一点对于整个图片为底图的画布需要支持缩放、拖拽并且无论画布位置在哪里大小如何所有绘制的点、线、面的坐标都是相对于图片左上角的并且拖拽、缩放点、线、面的坐标不改变。 要实现这一点其实就是理解这个画布的坐标系以及变换矩阵。 画布 fabric.js的底层是canvas绘图。canvas作为画布要支持拖拽、缩放就需要有个容器监听鼠标事件。如果我们直接对canvas dom进行拖拽、缩放有两个缺陷1是后续只能在最新的canvas范围内进行缩放、拖拽不易点击2是dom大小和位置变更会不断触发浏览器的重绘性能开销较大容易卡顿。 为了解决上述问题我提供以下解决方案 以一个固定位置的canvas作为画布拖拽、缩放只改变canvas的变形矩阵即可transform(a, b, c, d, e, f)。 a水平方向的缩放b竖直方向的倾斜偏移c水平方向的倾斜偏移d竖直方向的缩放e水平方向的移动f竖直方向的移动 因此我们的平移可以通过设置e和f缩放可以通过设置a和d。 在fabric.js中可以通过viewportTransform属性获取这六个参数。然后再通过setViewportTransform方法设置这六个参数。 居中 画布居中是标注平台必须的功能因为你拖拽缩放后图像可能偏离视图范围很多需要快速复原。居中的功能说起来简单但是实现还是有一些困难。其原理如下图所示。 首先获取要标注的图片宽100高80设置canvas的背景图片。 const canvas new fabric.Canvas(domId, {width: 100,height: 80 }); canvas.setBackgroundImage(图片链接); 其次初始化canvas的为父容器的宽高100x60初始化变换矩阵[1,0,0,1,0,0]即平移0缩放1不缩放。 canvas.setDimensions({ width: 100, height: 60 }); canvas.setViewportTransform([1,0,0,1,0,0]); 再次根据canvas父容器的宽高100x60按图像能全展示的比例对canvas视图范围进行等比缩放0.75得到新的宽高75x60。即a0.75d0.75。 canvas.setCanvasZoom(0.75); 最后将canvas视图范围往右平移15即e15f0。 canvas.setViewportTransform[0.75,0,0,0.75,15,0] 这样我们的canvas始终是父容器的范围而viewport范围已经居中。 注意变换矩阵设置后还需要执行渲染重置方法这个是fabric的底层逻辑漏洞如果不重置画布上的点线面的位置会偏移。 canvas.renderAndReset(); 平移 首先我们需要监听canvas的mousedown、mousemove、mouseup。 mousedown的回调函数我们设置全局变量active为true用于mousemove判断是否需要执行平移并记录lastX e.pageX和lastY e.pageY。 mousemove的回调函数如果active为true我们根据e.pageX - lastX和e.pageY - lastY确定横向和纵向的平移量再通过对transform的e和f进行叠加这个平移量实现平移功能。 mouseup的回调函数设置acitve为false。 缩放 监听canvas的wheel鼠标滚轮事件。 wheel的回调函数如果e.deltaY 0则表示缩小否则表示放大。缩小我们对当前的缩放比例统一进行 -0.1放大统一 0.1。如果你想更人性化可以对缩放比例做非线性的变化。 注意点 canvas的缩放是基于canvas左上角的原点并非基于平移后的点为原点。因此需要先将canvas的平移参数置为0后再设置缩放比例。 另外我们的缩放是基于鼠标当前位置为原点进行缩放。如图红色点处(x, y)进行缩放视图从v1变到v2我们已知两个视图对应的缩放比例z1和z2要求deltaX和deltaY根据相似定理得 deltaX (x - left) * (1 - z2 / z1) deltaY (y - top) * (1 - z2 / z1) newLeft deltaX left newTop deltaY top 因此我们在上一步设置好缩放比例后执行平移操作enewLeftfnewTop从而将视图从黑色框缩放至蓝色框。 预告 下一章 聊聊fabric的几何定制化渲染。
http://www.pierceye.com/news/846993/

相关文章:

  • 东莞网站优化公司亚马逊网站开发使用的什么方式
  • 天津网站免费制作专门做教育的视频网站
  • 深圳做网站的公司 cheungdom贵阳软件开发公司在哪里
  • 铜川做网站的公司电话超链接对做网站重要吗
  • 东莞市公租房申请网站-建设网厦门公司建站
  • 可以直接进入网站的代码cms网站后台模版
  • 文章修改网站网站建设高端设计
  • wap手机网站开发贵阳网页设计培训学校
  • e建网站天津建设工程计价网站
  • 太原好的网站制作排名网站数据怎么做接口供小程序调用
  • 广西省住房和城乡建设厅网站网络课程网站建设
  • 如何把网站转网站这几年做那些网站致富
  • 网站开发运维网页制作设计多少费用
  • 网站开发技术协议上海百度推广
  • 粤icp备网站建设 中企动力广州网站开发是什
  • 佛山+网站建设开发系统 平台
  • 运输房产网站建设健康南充app
  • 营销型网站推广公司最好的app开发公司
  • 做网站硬件江西省城乡建设陪训网官方网站
  • 深圳做小程序网站开发短视频剪辑在哪里学
  • 集约化网站建设广州网站制作
  • 如何做网站链接wordpress 视
  • 北京专业建设网站公司做网站那几步
  • 网站版式布局宁波百度推广优化
  • 邵阳专业网站设计网站建设打造营销型网站
  • 网站内部链接的策略成都装修公司网站建设
  • 网页制作与网站建设答案联合易网北京网站建设公司怎么样
  • 虚拟主机安装网站wordpress xss
  • 营销网站的优点网上服务大厅用户登录
  • 阿里云网站建设服务费会计科目网站域名改了帝国cms