Tho*_*goc 1 html5-canvas fabricjs fabricjs2
当鼠标悬停在像这个视频这样的对象上时,我想显示对象边界框,该怎么做?

我正在使用带有selectedObj.drawBorders函数的canvas.on('mouse:over')。但是,轮廓框绘制的位置不正确。当鼠标移出对象时,我不知道如何清除该轮廓框。
这是我的代码:
$(function() {
var canvasObject = document.getElementById("editorCanvas");
// set canvas equal size with div
$(canvasObject).width($("#canvasContainer").width());
$(canvasObject).height($("#canvasContainer").height());
var canvas = new fabric.Canvas('editorCanvas', {
backgroundColor: 'white',
selectionLineWidth: 2,
width: $("#canvasContainer").width(),
height: $("#canvasContainer").height()
});
canvas.viewportTransform[4] = 20;
canvas.viewportTransform[5] = 40;
canvas.on('mouse:over', function(opts) {
var selectedObj = opts.target;
if (selectedObj != null) {
selectedObj.drawBorders(canvas.getContext())
}
});
var text = new fabric.Text('hello world', { left: 50, top: 50 });
canvas.add(text);
setObjectCoords();
function setObjectCoords() {
canvas.forEachObject(function(object) {
object.setCoords();
});
}
});Run Code Online (Sandbox Code Playgroud)
<style>
#canvasContainer {
width: 100%;
height: 100vh;
background-color: gray;
}
</style>Run Code Online (Sandbox Code Playgroud)
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.4.3/fabric.js"></script>
<div id="canvasContainer">
<canvas id="editorCanvas"></canvas>
</div>Run Code Online (Sandbox Code Playgroud)
请帮我解决这个问题!
谢谢!
使用方法_renderControls并在 styleOverride 设置hasControls : false中仅绘制边框。
演示
$(function() {
var canvas = new fabric.Canvas('editorCanvas', {
backgroundColor: 'white',
selectionLineWidth: 2,
width: $("#canvasContainer").width(),
height: $("#canvasContainer").height()
});
var text = new fabric.IText('hello world', {
left: 50,
top: 50
});
canvas.add(text);
canvas
text.on('mouseover', function() {
this._renderControls(this.canvas.contextTop, {
hasControls: false
})
})
text.on('mousedown', function() {
this.canvas.clearContext(this.canvas.contextTop);
})
text.on('mouseout', function() {
this.canvas.clearContext(this.canvas.contextTop);
})
});Run Code Online (Sandbox Code Playgroud)
<style>
#canvasContainer {
width: 100%;
height: 100vh;
background-color: gray;
}
</style>Run Code Online (Sandbox Code Playgroud)
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.4.3/fabric.js"></script>
<div id="canvasContainer">
<canvas id="editorCanvas"></canvas>
</div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1477 次 |
| 最近记录: |