前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >图形编辑器基于Paper.js教程21:在画布中创建一个不随视图缩放的矩形,并固定在视图的位置,标尺功能的实现

图形编辑器基于Paper.js教程21:在画布中创建一个不随视图缩放的矩形,并固定在视图的位置,标尺功能的实现

作者头像
拿我格子衫来
发布2025-01-22 10:07:35
发布2025-01-22 10:07:35
8200
代码可运行
举报
文章被收录于专栏:TopFETopFE
运行总次数:0
代码可运行

在图形编辑器中,一般都会有标尺的功能,标尺工具,能够让用户建立清晰的坐标系,能够知道原点在那里,并且能够大致估算出,尺寸,距离,和当前光标所在的位置。 如下图标尺所在的位置:

标尺工具具有以下这样几个特性 1:标尺的尺寸大小不随着视图的缩放而改变 2:固定在画布的四周,一般在上面和左边,有些坐标系是在下面

下面讲一下如何 做一个简单的标尺工具 之前的文章我已经告诉大家如何做一个不随视图改变大小的圆,圆是最容易实现的,因为,使用缩放比计算半径就可以啦。矩形就稍微麻烦一些,视图缩放后需要对矩形 进行反缩放,才能保证大小。 这还不算难,难点在计算视图缩放后,矩形应该移动多少才能保持在屏幕的固定位置。

在视图缩放后,让矩形在视觉上 不改变大小, 核心代码如下:

代码语言:javascript
代码运行次数:0
复制
function afterZoom() {
  var currentZoom = paper.view.zoom;
  var desiredSize = 100; // 屏幕上希望的尺寸
  var scalingFactor = desiredSize / (rectangle.bounds.width * currentZoom);
  rectangle.scale(scalingFactor);
}

在所发后,对一个矩形执行反缩放就能实现矩形在视觉上尺寸一致不变。

下面要实现不管以画布那个位置为缩放中心,对视图进行缩放,矩形都能“不会动”

代码语言:javascript
代码运行次数:0
复制
// 缩放前先获取矩形中心,然后转换为视图的坐标 
var rectangle = paper.project.getItem({ name: "fizzRect" });
// 获取矩形的中心点
var rectCenter = rectangle.bounds.center;
var newViewPosition = paper.view.projectToView(rectCenter);

paper.view.scale(delta, viewPosition);

// 视图缩放后,使用视图坐标,再转换成项目的坐标,重新设置矩形中心点坐标,齐活
var newRectCenter = paper.view.viewToProject(newViewPosition);
// 移动矩形,使其中心保持在相对于视图的相同位置
rectangle.position = newRectCenter;

看一下效果, 如下图: 默认情况

缩放后

对于画布的移动,更加简单只需调整 上标尺中心点的y值,或者左标尺中心点的x值。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档