Fabricjs,旋转对象后是否可以获得虚拟矩形的左、上、右位置

2024-02-03

旋转物体后是否可以获得虚拟矩形的左、上、右位置?


您正在寻找的是边界矩形你的对象:

获取边界矩形(忽略Vpt) → {Object} 返回对象边界矩形的坐标(左、上、宽、高),该框旨在与画布轴对齐。

返回:具有 left、top、width、height 属性的对象 Type Object

参考:Fabricjs源代码 http://fabricjs.com/docs/fabric.js.html#line13672

var canvas = this.__canvas = new fabric.Canvas('c');
fabric.Object.prototype.transparentCorners = false;
var rect = new fabric.Rect({
  left: 120,
  top: 30,
  width: 100,
  height: 100,
  fill: 'green',
  angle: 20
});

canvas.on('after:render', function() {
  canvas.contextContainer.strokeStyle = '#555';
  canvas.forEachObject(function(obj) {
    var bound = obj.getBoundingRect(); // <== this is the magic
    console.log(bound);
    canvas.contextContainer.strokeRect(
      bound.left,
      bound.top,
      bound.width,
      bound.height
    );

  });

});
canvas.add(rect);
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.js"></script>
<canvas height=200 width=300 id="c" style="border:1px solid black"></canvas>

自从after:render渲染每一帧后连续触发该事件,您可以看到每次更新时对象的更新边界框,包括位置、旋转和尺寸。

var canvas = this.__canvas = new fabric.Canvas('c');
fabric.Object.prototype.transparentCorners = false;
var rect = new fabric.Rect({
  left: 120,
  top: 30,
  width: 100,
  height: 100,
  fill: 'green',
  angle: 20
});
canvas.add(rect);
canvas.on('after:render', function() {
  canvas.contextContainer.strokeStyle = '#555';
  var ao = canvas.getActiveObject();
  if (ao) {
    var bound = ao.getBoundingRect();

    canvas.contextContainer.strokeRect(
      bound.left,
      bound.top,
      bound.width,
      bound.height
    );
    console.log(bound);

  }
});
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.js"></script>
<canvas height=200 width=300 id="c" style="border:1px solid black"></canvas>

以供参考处理事件 https://github.com/kangax/fabric.js/wiki/Working-with-events

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fabricjs,旋转对象后是否可以获得虚拟矩形的左、上、右位置 的相关文章

  • 下划线 where 或条件(下划线、lodash 或任何其他解决方案)

    我实现了一个混合来添加 或 条件与 where var arr a 1 b 4 a 5 a 6 a 11 mixin or function obj arr condition return chain arr where conditio
  • 单击 DIV 时滚动到顶部? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么用 < 对 JS 数字数组进行排序有效?

    在 JavaScript 中对数字数组进行排序时 我不小心使用了 lt 代替通常 https stackoverflow com questions 1063007 how to sort an array of integers corr
  • 将 C# 3D 数组移植到 JS 3D 数组

    我开发了一个 C 库 它在 3 个项目中使用 这些项目在特定的代码段中中继 不过 我仍然需要在 javascript 中使用该代码 所以将其导出 问题是 我认为我无法复制同样的逻辑 比如这个问题我想了好几天也没有得出答案 在 C 库中 我有
  • 获得焦点时如何移动文本框视口?

    我有一个文本框 其中可能包含大于文本框大小的字符串 当我打字时 文本框 视口 总是移动以显示我输入的最后一个字符 例如 当您在 SO 问题中写下一个非常大的标题时 A 问题是 如果文本框失去焦点 当它再次聚焦时 视口总是设置在文本的开头 而
  • JQuery:获取单选按钮值

    我有以下 HTML HTML
  • 使用 javascript/jquery 检查 .css 样式表的名称

    我正在尝试为论坛制作一个小 chrome 扩展 但我只希望它在论坛的某个区域中工作 问题是我不能只做 matches subforum 因为该论坛中的线程无法通过 URL 区分它们所在的子论坛 subforum 有自己的 css 样式表 所
  • 将 Blob 设置为 iframe 的“src”

    以下代码在 Chrome 中完美运行 但它不适用于 IE 有人可以告诉我这里出了什么问题吗 iframe src 也设置为 blob 如下所示
  • 获取与请求

    我正在使用 JSON 流并尝试使用 fetch 来使用它 该流每隔几秒发出一些数据 仅当流关闭服务器端时 使用 fetch 来使用流才可以访问数据 例如 var target the url var options method POST
  • this 关键字是构造函数中的窗口对象

    好吧 所以我以为我理解了这一点 没有双关语的意思 但显然不是 var Constructor function var internalFunction function return this window this myMethod f
  • 如何将嵌套对象数组转换为 CSV?

    我有一个包含嵌套对象的数组 例如 name 1 children name 1 1 children 1 2 id 2 thing name 2 1 children 2 2 name 3 stuff name 3 1 children 3
  • 如果没有其他函数链接到承诺,则默认行为

    我想打开一个 确认您要取消对话框 如果没有链接其他功能 则默认导航回页面 window history back 如果我传递回调 我可能会这样做 function openCancelModal form callback if form
  • 我想在使用 Jest Snapshots 时获得图像文件名/路径

    我已经开始使用Jest https facebook github io jest 在一个新项目中有很多 我现在正在使用Snapshot https facebook github io jest docs tutorial react h
  • 在 Node.js 中封装 require 可以解决相对路径调用

    我正在尝试创建一个 require 包装器来加载依赖项 但我发现很难让它像原始的 require 函数一样工作 当路径是相对路径时 包装器无法解析为正确的路径 因为我的加载程序和调用程序文件不在同一文件夹中 这是一个简化的描述 index
  • 如何取消 ComponentWillUnmount 中的所有请求?

    根据docs https facebook github io react docs react component html componentwillunmount ComponentWillUnmount 能够取消请求 我有一个页面发
  • Google 脚本过滤一个值的范围

    我想过滤第 1 列中仅包含 Bob 特定值的行的 google 工作表范围 到目前为止 我的代码允许我过滤out第 1 列中有 Bob 的行 我需要相反 我想返回第 1 列中只有 Bob 的行 因此 其中 filterSettings 不是
  • PhoneGap文件传输错误1、哪里写FileTransfers?

    相关 https stackoverflow com questions 21044197 download file and store them locally in sdcard using phonegapbuild https s
  • Origin 无权使用地理定位服务 - 即使通过 HTTPS

    我有一个通过 HTTPS 使用 HTML5 地理定位的网页 它在桌面浏览器上运行良好 然而 在 iOS Safari 上 我收到错误 Origin 无权使用地理定位服务 我已确保页面上的所有内容都通过 HTTPS 加载 每个图像 每个脚本和
  • 如何在没有消息时隐藏 Bootstrap 警报框

    我用 Bootstrap 做了一个简单的警报框 如下所示 div class alertBox span class alert alert info bag session username span div When there is
  • Apollo 服务器,Graphql - 必须提供查询字符串

    我不确定我在这里做错了什么 我现在已经被困了一段时间 让我的突变在无服务器设置中与我的 apollo server lambda 一起运行 当我尝试运行这样的查询时 我的查询工作正常 mutation signIn username Som

随机推荐

  • stringdist 包中的 Jaccard 相似度来匹配字符串中的单词

    我想使用 stringdist 函数中的 Jaccard 相似度来确定词袋的相似度 据我所知 使用 Jaccard 只能匹配字符串中的字母 c lt c cat dog person d lt c cat dog ufo stringdis
  • 如何使用 Maven 使用私钥通过 SCP 进行部署

    在Windows上使用Maven 通过SCP传输 使用私钥 这似乎是一个非常简单且有记录的过程 但这对我不起作用 在settings xml中
  • 在 2 个 Android 应用程序之间共享 SQLite 数据库?

    我需要在两个应用程序之间共享一个数据库 我知道数据库将在 data data MY PACKAGE databases 上创建 由于包名称不同 当我在任一应用程序上创建数据库时 是否可以定义一个包名称的路径 谢谢 更新 下面描述的方法依赖于
  • Javascript 类与对象,优缺点?

    在我最近的 javascript 程序中 主要是为了乐趣和概念验证 我有很多不同类型的对象 并且每种对象都有相当数量的 实例 所以我想我应该为这些使用类 但是由于它们非常简单 我可以直接直接构造它们而不是使用类 我的意思的例子 I m ma
  • 使用 pyodbc 将 pandas 数据帧高效插入到 MS SQL Server

    我正在尝试使用 pyodbc 将 pandas 数据帧更新插入到 MS SQL Server 我之前使用过类似的方法来进行直插入 但是这次我尝试的解决方案非常慢 有没有比我现有的更简化的方法来完成更新插入 sql connect pyodb
  • ElasticSearch:嵌套查询未返回所需结果

    我是 Elastic Search 的新手 在实现一些查询时遇到一些问题 以下是我的索引结构 cl 1 aliases mappings properties timestamp type date version type long cl
  • write.table 到新目录

    有没有办法使用 write 和 write table 使输出文件位于与工作目录不同的目录中 它尝试在文件名之前设置输出文件的路径 但只收到一条错误消息 如果您使用的是 Windows R如果看到的话就会知道要走出当前目录C 首先 可能还有
  • 如何将 MongoDB 查询转换为字典

    我的 MongoDB 中有一个集合 userId 1234 name Mike userId 1235 name John 我想得到表格的结果 dict userId document 换句话说 我想要一个结果 它是一个字典 其中userI
  • Python mechanize - 两个“提交”类型的按钮

    我有一个用 python 编写的 mechanize 脚本 它填写了一个 Web 表单 并且应该单击 创建 按钮 但有一个问题 表单有两个按钮 一种用于 添加附加文件 一种用于 创建 两者都是 提交 类型 附加按钮是列出的第一个按钮 因此
  • Inception v3 采用 Base64 图像在 google ml 引擎上进行预测

    我正在尝试更改我的初始网络 用 keras 编码 以采用 Base64 图像字符串作为预测的输入 之后 我想将其保存为张量流 pb 文件 网络 因为这是 Google ml 引擎所需要的 正常的预测方法是这样的 img image jpg
  • 编写通用交换函数

    我正在尝试学习 Rust 并想编写一个简单的通用交换函数 fn swap
  • 当属性设置太早时,UIImageView 不显示图像

    我有一个图像想要显示在UIView 在界面生成器中 UIView是根和UIImageView是它的孩子 视图连接到视图控制器的视图出口 图像视图连接到图像视图出口 property nonatomic retain IBOutlet UII
  • Amazon WorkMail 账户无法接收电子邮件

    我之前设置了 AWS WorkMail 组织和电子邮件地址 并且正在使用托管在 Route 53 上的自定义域 这已成功运行 但是现在我已经创建了第二个 WorkMail 地址 我无法接收到它的电子邮件 尽管我可以从它发送电子邮件 我收到以
  • 使用 laravel 和 vuejs 导出 Excel

    我喜欢使用 Laravel 和 Vuejs 导出 Excel 不知何故 代码返回真实值 但无法下载 Excel 文件 如果我执行正常请求 它将下载文件 但在 axios 请求中 它不会导出文件 我正在使用 php artisan make
  • 复制另一个账户拥有的 AMI 时出现问题

    我正在尝试从一个账户 A 复制一个由另一个账户 B 拥有的 AMI 我之前已经构建过此 AMI 帐户 A 具有 AMI 的启动权限 但当我复制时 收到以下错误消息 Images from AWS Marketplace cannot be
  • 在 R 中使用 foreach 读取全局变量

    我正在尝试使用 RStudio 在具有 16 核 CPU 和 64 GB RAM 的 Windows 服务器上运行 foreach 循环 使用 doParallel 包 工作 进程从 for 循环外部复制所有变量 通过运行 foreach
  • 如何生成包含 JSON 结构的下载文件?

    我的控制器中有这个方法 public IActionResult Download return Json context Users 我注意到它生成了正确的 JSON 结构but它在浏览器中呈现为普通文本 我希望将其下载到客户的计算机上
  • 输出模板内的嵌套类

    我试图重载 ostream 运算符以允许输出模板内的嵌套类 但是 编译器无法将实际的函数调用绑定到我的重载 template
  • iOS:(Swift)如何显示距当前位置的距离并在注释副标题上存在注释

    我目前正在使用 Swift 语言开发基于 iOS 的地图应用程序 我想要一个建议 因为在我在地图视图上绘制所有引脚之后 我使用名为 Alamofire 的 JSON 框架从服务器接收数据 我希望地图上所有注释的副标题显示距用户当前位置的距离
  • Fabricjs,旋转对象后是否可以获得虚拟矩形的左、上、右位置

    旋转物体后是否可以获得虚拟矩形的左 上 右位置 您正在寻找的是边界矩形你的对象 获取边界矩形 忽略Vpt Object 返回对象边界矩形的坐标 左 上 宽 高 该框旨在与画布轴对齐 返回 具有 left top width height 属