Cách nhanh nhất để tùy chỉnh các điều khiển là viết _drawControl
chức năng riêng của bạn và làm cho nó tương thích với fabricjs tiêu chuẩn để ghi đè lên nó. Hãy nhớ rằng chức năng này được gọi là 9 lần cho mỗi lần render, vì vậy hãy cố gắng ở mức thấp với mã và bản vẽ. Ngoài ra, nếu bạn sửa đổi ngữ cảnh (ctx), hãy nhớ sử dụng .save
và .restore
để không làm lộn xộn đường dẫn dựng hình.
FabricJs sẽ gọi hàm với top
và left
sẵn sàng cho một hình chữ nhật, vì vậy góc sẽ có mặt tại top + size/2
và left + size/2
, trong đó kích thước là this.cornerSize
function newControls(control, ctx, methodName, left, top) {
if (!this.isControlVisible(control)) {
return;
}
var size = this.cornerSize;
isVML() || this.transparentCorners || ctx.clearRect(left, top, size, size);
ctx.arc(left + size/2, top + size/2, size/2, 0, 2 * Math.PI, false);
ctx.stroke();
}
fabric.Object.prototype._drawControl = newControls;
function newControls(control, ctx, methodName, left, top) {
if (!this.isControlVisible(control)) {
return;
}
var size = this.cornerSize;
this.transparentCorners || ctx.clearRect(left, top, size, size);
ctx.beginPath();
ctx.arc(left + size/2, top + size/2, size/2, 0, 2 * Math.PI, false);
ctx.stroke();
}
fabric.Object.prototype._drawControl = newControls;
fabric.Object.prototype.cornerSize = 15;
var canvas = new fabric.Canvas('c');
canvas.add(new fabric.Rect({width:100, height:100, top:50, left:50}));
canvas.setActiveObject(canvas.getObjects()[0]);
<script type ="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.5.0/fabric.min.js"></script>
<canvas id="c" width="400" height="400" style="border:1px solid #ccc"></canvas>
tôi biết điều này câu hỏi là rất cũ và có lẽ ngoài tầm quan tâm của bạn bây giờ, nhưng xin vui lòng có được một cái nhìn và phê duyệt nó để người dùng khác có thể hưởng lợi từ điều này – AndreaBogazzi