Ich benutze Fabric.js mit React/Redux und ich versuche, den folgenden Effekt auf der Leinwand zu erzielen: (Hinweis ich habe 2 Lineale an Oben und links, die sich beim Schwenken nicht bewegen sollten, nur horizontal und vertikal).Fabric.js Positionselemente relativ zu getZoom() und getWidth()/getHeight()
Dies ist ein Video von der Effekt, den ich zu bekommen versuche: https://vid.me/qs5Q
ich den folgenden Code haben:
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) ;
});
Dies ist ein Arbeits JSFiddle: https://jsfiddle.net/z3p8utmc/19/ Der Code, da ich nicht abgeschlossen ist weiß nicht genau, wie man die Lineale positioniert, versucht, mit ViewPort, Canvas-Größe, etc. zu spielen, aber es ist nicht gelungen, den gleichen Effekt zu erzielen.
Vielen Dank für die Hilfe.
Sehr geehrte (r) @Tim würden Sie bitte einen Blick auf diese bitte: http://stackoverflow.com/questions/42781527/fabric-js-draw-regular-octagon? –
Wird tun, matey ... –