Fabric.jsをReact/Reduxで使用していますが、キャンバスで次のような効果を得ようとしています。パンニング時に上下左右に移動しないようにしてください)。Fabric.jsの位置は、getZoom()とgetWidth()/ getHeight()との相対位置です。
これは私が取得しようとしています効果のビデオです:https://vid.me/qs5Q
私は次のコードを持っている:
var canvas = new fabric.Canvas('c');
var topRuler = new fabric.Text('this is the top ruler', {
top: 0,
left: 60,
selectable: false
});
var leftRuler = new fabric.Text('this is the left ruler', {
top: 150,
left: -125,
selectable: false
});
var circle = new fabric.Circle({
radius: 20,
fill: 'green',
left: 180,
top: 100
});
var triangle = new fabric.Triangle({
fill: 'green',
left: 150,
top: 170
});
var panning = false;
var panningOn = false;
leftRuler.setAngle(-90).setCoords();
canvas.add(circle, triangle, topRuler, leftRuler);
canvas.renderAll();
canvas.on('mouse:up', function(e) {
if (panningOn) panning = false;
});
canvas.on('mouse:down', function(e) {
if (panningOn) panning = true;
});
canvas.on('mouse:move', function(e) {
if (panning && e && e.e) {
moveX = e.e.movementX;
moveY = e.e.movementY;
topRuler.set({
top: topRuler.top - moveY,
left: topRuler.left - moveX
});
leftRuler.set({
top: leftRuler.top - moveY,
left: leftRuler.left - moveX
});
canvas.relativePan(new fabric.Point(moveX, moveY));
}
});
$('#toggle').click(function() {
panningOn = !panningOn;
canvas.selection = !panningOn;
canvas.defaultCursor = 'default';
$('#toggle').html('Turn Panning ON');
if (panningOn) {
$('#toggle').html('Turn Panning OFF');
canvas.defaultCursor = 'move';
}
});
/* ZOOM FUNCTIONS */
$('#zoomIn').click(function(){
canvas.setZoom(canvas.getZoom() * 1.1) ;
});
$('#zoomOut').click(function(){
canvas.setZoom(canvas.getZoom()/1.1) ;
});
これは作業JSFiddleです:https://jsfiddle.net/z3p8utmc/19/ コードは、I以来、完全ではないがルーラーを配置する方法、viewPort、キャンバスのサイズなどで再生しようとした方法を正確にはわかりませんが、同じ効果を得ることはできませんでした。
ありがとうございました。ここで
親愛なる@ティムお願いします。http://stackoverflow.com/questions/42781527/fabric-js-draw-regular-octagon? –
、メイト... –