【发布时间】:2018-10-07 05:05:56
【问题描述】:
我正在尝试将角度设置为增量 90,同时保持视觉上相同的位置。我有它的工作,但它真的很hacky。有人可以改进此代码(例如)而不需要 switch 语句。 https://codesandbox.io/s/lx347ln669
【问题讨论】:
标签: fabricjs
我正在尝试将角度设置为增量 90,同时保持视觉上相同的位置。我有它的工作,但它真的很hacky。有人可以改进此代码(例如)而不需要 switch 语句。 https://codesandbox.io/s/lx347ln669
【问题讨论】:
标签: fabricjs
triangle.rotate(angle);
设置具有中心旋转的实例的“角度”
应该在它的中心旋转上旋转三角形。这与
triangle.set('angle', 90)
它似乎基于左上角旋转。
如果您希望用户使用默认控件并“对齐”您的角度,您也可能会发现这很有用:
straighten(triangle);
拉直对象(将其从当前角度旋转到 0、90、180、270 等之一,具体取决于哪个更近)
【讨论】:
obj.rotate(...) 的选定对象上遇到一些奇怪的问题,并且尽管旋转的对象及其选择发生了变化,但动作区域仍保持相同的位置。为了修复它调用obj .setCoords();查看更多链接fabricjs.com/docs/fabric.Object.html#setCoords根据当前角度、宽度和高度设置角位置坐标。
在创建三角形时尝试设置originX: 'center' 和originY: 'center'。无需更改每次旋转的原点。
var canvasEl = document.getElementById('c');
var canvas = new fabric.Canvas('c');
var triangle = new fabric.Triangle({
width: 200,
height: 200,
fill: "blue",
left: 50,
top: 50,
originX: "center",
originY: "center"
});
canvas.add(triangle)
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.3.6/fabric.min.js"></script>
<canvas id="c"></canvas>
【讨论】: