2013-10-07 1 views
1

Я использую следующий код для увеличения и уменьшения эффекта. Проблема в том, что я выполняю клип [предположим, что клип для круга с цветом штриха] на холсте, а затем выполнил этот zoomIn. Что произошло, все элементы увеличены, но область клипа не увеличена. Как сделать область клипа для увеличения?холст для увеличения не работает для области клипа

Метод зажима ::

canvas.clipTo = function(ctx) { 
         var shp = new fabric.Rect({ 
          top : top_Pos, 
          left : left_Pos, 
          width : c_width, 
          height : c_height, 
          fill:'', 
          stroke : 'red', 
          strokeWidth : 5 

         }); 
         shp.render(ctx); 
        }; 

метод масштабирования ::

// Zoom In 
    function zoomIn() { 
     // TODO limit the max canvas zoom in 
     console.log('zoom in called'); 
     if (zoomEffect == false) { 

      canvasScale = canvasScale * SCALE_FACTOR; 

      canvas.setHeight(canvas.getHeight() * SCALE_FACTOR); 
      canvas.setWidth(canvas.getWidth() * SCALE_FACTOR); 

      var objects = canvas.getObjects(); 
      for (var i in objects) { 
       var scaleX = objects[i].scaleX; 
       var scaleY = objects[i].scaleY; 
       var left = objects[i].left; 
       var top = objects[i].top; 

       var tempScaleX = scaleX * SCALE_FACTOR; 
       var tempScaleY = scaleY * SCALE_FACTOR; 
       var tempLeft = left * SCALE_FACTOR; 
       var tempTop = top * SCALE_FACTOR; 

       objects[i].scaleX = tempScaleX; 
       objects[i].scaleY = tempScaleY; 
       objects[i].left = tempLeft; 
       objects[i].top = tempTop; 

       objects[i].setCoords(); 
      } 

      canvas.renderAll(); 
      zoomEffect = true; 
     } 
    } 

    // Zoom Out 
    function zoomOut() { 
     // TODO limit max cavas zoom out 
     console.log('zoom out called'); 
     if (zoomEffect == true) { 

     canvasScale = canvasScale/SCALE_FACTOR; 

     canvas.setHeight(canvas.getHeight() * (1/SCALE_FACTOR)); 
     canvas.setWidth(canvas.getWidth() * (1/SCALE_FACTOR)); 

     var objects = canvas.getObjects(); 
     for (var i in objects) { 
      var scaleX = objects[i].scaleX; 
      var scaleY = objects[i].scaleY; 
      var left = objects[i].left; 
      var top = objects[i].top; 

      var tempScaleX = scaleX * (1/SCALE_FACTOR); 
      var tempScaleY = scaleY * (1/SCALE_FACTOR); 
      var tempLeft = left * (1/SCALE_FACTOR); 
      var tempTop = top * (1/SCALE_FACTOR); 

      objects[i].scaleX = tempScaleX; 
      objects[i].scaleY = tempScaleY; 
      objects[i].left = tempLeft; 
      objects[i].top = tempTop; 

      objects[i].setCoords(); 
     } 
      } 
     canvas.renderAll(); 
      zoomEffect = false; 
    } 

ответ

0

Использование canvas.zoomToPoint(point,zoomFactor);

+2

Пожалуйста, добавьте объяснение, почему ваш код отвечает на этот вопрос. В противном случае это может быть помечено как сообщение с небольшим усилием. –

 Смежные вопросы

  • Нет связанных вопросов^_^