網站搜尋

javascript - 在 fabricjs 中對填充圖片的物件進行透視變換

我們有一些填充了圖片來源的物件。在 Fabric.js 中是否有可能透過調整矩形網格的位置來實現填充圖片的透視變換?

我正在嘗試在 Fabric JS 中實現類似於上方圖片的效果……

答案#1

使用 FabricJS 或其他 2D 畫布庫不可能實現真正的透視扭曲。

Canvas 的 2D 上下文無法進行透視變換。

大多數畫布庫,包括 fabricJS,使用 2D 上下文。

有一個 Canv

閱讀更多 →

javascript - fabricjs,旋轉物件後,是否可以獲取虛擬矩形的左、上和右位置

在旋轉物體之後,是否有可能獲得虛擬矩形的左、上和右位置?

答案#1

你正在尋找的是你物件的邊界矩形:

getBoundingRect(ignoreVpt) → {Object} 返回物件邊界矩形(左、上、寬、高)的座標,該矩形是對齊畫布軸線的。

返回值:具有 left、top、width、height 屬性

閱讀更多 →

打包 TypeScript:聲明檔在 dist + cjs + es

我正在嘗試使用 rollup 打包一個 TypeScript 函式庫,並生成宣告(d.ts)檔案,我想要輸出 cjs 和 es 版本。

所以我想出了這個 rollup 配置:

const {nodeResolve} = require('@rollup/plugin-node-resolve') const nodeExternals = require('rollup-plugin-node-externals'); const json = require('@rollup/plugin-json'); const commonjs = require('@rollup/plugin-commonjs'); const typescript = require('rollup-plugin-typescript2'); const packagePlugin = require('@mpen/rollup-plugin-package'); const cleanPlugin = require('@mpen/rollup-plugin

閱讀更多 →

node.js - 如何配置 TS 以允許從 CJS 導入到 ES 模組(node-fetch 與 Express)?

我正在嘗試在一個專案中運行兩個庫:fetch-node,它是一個 ES 模組,以及 Express,它是 CommonJS。問題是我必須這樣導入 fetch-node:

import fetch from 'node-fetch';

但 Express 要求我這樣導入它:

const express = require('express')

這

閱讀更多 →

javascript - typescript 中的 kineticjs 形狀

我正在嘗試根據以下的 kineticjs JavaScript 代碼創建一個形狀:

var triangle = new Kinetic.Shape({ drawFunc: function(canvas) { var context = canvas.getContext(); context.beginPath(); context.moveTo(200, 50); context.lineTo(420, 80); context.quadraticCurveTo(300, 100, 260, 170); context.closePath(); canvas.fillStroke(this); }, fill: '#00D2FF', stroke: 'black', strokeWidth: 4 });

這是一個範例,可以在以下網址找到:http://www.html5canvastuto

閱讀更多 →

javascript - 預設類別實例化導致 TypeError(ESM/CJS 互操作)

問題摘要

嗨,

我有一個 TypeScript 專案,我正試圖實例化一個原本是另一個套件的預設匯出的類別。我在使用 ESM 語法編寫我的專案,而它所依賴的套件則有 CJS 輸出。我遇到的問題是,在執行時,當流程到達類別實例化的那一點時,我收到以下錯誤 -

new TestClass({ arg1: "Hello, World!" }); ^ TypeError: TestClass is not a constructor

閱讀更多 →

在單體倉庫中使用 TypeScript 專案引用構建 cjs 和 esm

我有一個 TypeScript monorepo 原型設置,使用 cjs、yarn workspaces 和專案引用,並啟用了增量構建,已經運行起來了:

https://github.com/rosskevin/learn-a/tree/build-cjs-esm

由於 tsc -b 使用每個專案中的預設 tsconfig.json,而它們是為 cjs 設定的,我想簡單地透過命令列傳遞覆蓋設定:

yarn tsc -b --outDir

閱讀更多 →

javascript - 如何點擊穿過一個 fabricjs 物件以選擇其下方的物件(不使用 evented 屬性)

你如何使 FabricJS 物件「鎖定」,使得:

  1. 它不可選擇 (obj.selectable=false)
  2. 允許右鍵點擊的 'mousedown' 事件(obj.evented 必須為 true)
  3. 沒有懸停狀態/事件(滑鼠懸停時不會偵測此物件或改變游標)
  4. 允許滑鼠點擊其下的物件(滑鼠可以透過它存取物件)

我試著尋找處理 'evented' 屬性的程式碼,但在原始碼中找不到。evented 屬性確實使物件透明(即可以點擊穿透它),但會移除 'mousedown' 事件。

在我的情況下,需要這個功能來實現帶有鎖定/解鎖對象功能的上下文菜單。如果對象被鎖定,你仍然需要能夠右鍵點擊它以再次顯示上下文菜單,這樣你就可以解鎖它。此外,當對象被鎖定時,你需要能夠訪問並點擊它下面的對象。

Fabricjs 3.6.6

編輯:我被告知,fabric 本身並不支援這個功能,必須編寫一些自訂程式碼來新增這個功能,詳情請參見: https:/

閱讀更多 →

angular - 如何在使用 fabricjs 調整文字框大小時防止文字縮放

我對 FabricJs 很陌生,我關心的是關於調整文字方塊大小的問題——我有以下解決方案,能夠垂直和水平調整文字方塊大小,但無法同時進行。我一直在嘗試找到一個能夠同時調整而不改變文字大小的解決方案。你能幫我找到解決方法嗎?

這裡是我的 jsfiddle 範例連結: http://jsfiddle.net/vstefani/s7yfu93w/27/

var canvas = new fabric.Canvas('canvas'); canvas.setWidth(500); canvas.setHeight(500); var

閱讀更多 →

ES6 模塊 - TypeScript 可以同時導入 ESM 和 CJS 依賴嗎?

我正在撰寫一個使用 NPM 安裝依賴項的 TypeScript 應用程式:

  • 其中一些依賴項通過 CJS 匯出
  • 其中一些依賴項通過 ESM 匯出

是否有一個 tsconfig.json 配置可以讓我透明地使用所有這些依賴項?

答案#1

是的,它可以!

例如,這是一個全新的 ES 模組專案,帶有一個 ESM 依賴(chalk)和一個 common.js 依賴(aes-js):

package.json

閱讀更多 →