2017-07-11 56 views
0

設置將backgroundImage我想創建像布帆布素描的畫板畫板elemet 這樣的:面料JS從面料對象

let app = new Vue({ 
 
    el: '#app', 
 
    computed: { 
 
    \t canvasSize() { 
 
     let VM = this 
 
     let el, width, height 
 
     el = VM.$refs.canvasBoxWrap 
 
     width = el.clientWidth 
 
     height = el.clientHeight 
 
     return { width, height } 
 
    } 
 
    }, 
 
    data: { 
 
    dSize: '' 
 
    }, 
 
    mounted() { 
 
    let VM = this 
 
    
 
    VM.dSize = VM.canvasSize 
 

 

 
    let fabricCanvasInit =() => { 
 
     let canvas = new fabric.Canvas(VM.$refs.facanvas , { 
 
     enableRetinaScaling: true 
 
     }) 
 
     canvas.set({ 
 
     'enableRetinaScaling': true, 
 
     'backgroundColor': '#dddddd' 
 
     }) 
 
     canvas.setWidth(VM.canvasSize.width) 
 
     canvas.setHeight(VM.canvasSize.width/16 * 9) 
 
     // canvas.set('enableRetinaScaling', true) 
 
     // canvas.set('backgroundColor' , '#dddddd') 
 

 
     let artBoard = new fabric.Rect({ 
 
     stroke: '#000', 
 
     strokeWidth:1, 
 
     fill: 'rgba(255,255,255,1)', 
 
     width: VM.canvasSize.width - 80, 
 
     height: VM.canvasSize.width/16 * 9 - 80 
 
     , 
 
     shadow : { 
 
      color: 'rgba(0,0,0,0.5)', 
 
      blur: 20, 
 
      offsetX: 0, 
 
      offsetY: 10, 
 
      opacity: 0.6, 
 
      fillShadow: true 
 
     } 
 
     }) 
 

 
     canvas.add(artBoard) 
 
     canvas.artBoard = artBoard 
 
     canvas.artBoard.center() 
 
     canvas.artBoard.set({ 
 
     'selectable' : false 
 
     }) 
 
     canvas.renderAll() 
 
     console.log(canvas); 
 
    } 
 

 
    fabricCanvasInit() 
 
    } 
 
})

但在這個演示中,「畫板」是由織物矩形對象創建。 當我更改其他對象,如'sendToBack()',我將重置「畫板」對象sendToBack() 我想添加與像fabricCanvas.setBackgroundImage(...) 陰影矩形怎麼辦?

jsfiddle.net demo

回答

1

(function() { 
 
    var canvas = this.__canvas = new fabric.Canvas('canvas'); 
 
    
 
    // create a rectangle with a fill and a different color stroke 
 
    var artBoard = new fabric.Rect({ 
 
     stroke: '#000', 
 
     strokeWidth:1, 
 
     fill: 'rgba(255,255,255,1)', 
 
     width: canvas.width - 40, 
 
     height: canvas.height - 40, 
 
     selectable:false, 
 
     shadow : { 
 
      color: 'rgba(0,0,0,0.5)', 
 
      blur: 20, 
 
      offsetX: 0, 
 
      offsetY: 10, 
 
      opacity: 0.6, 
 
      fillShadow: true, 
 
      
 
     } 
 
     }) 
 

 
    canvas.centerObject(artBoard); 
 
    canvas.setBackgroundImage(artBoard);//add object as background 
 
    canvas.renderAll(); 
 
})();
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.11/fabric.min.js"></script> 
 
<canvas id="canvas" width="400" height="400"></canvas>

您可以添加對象作爲背景canvas.setBackgroundImage(obj),現在這個工程作爲圖像,你可以使用sendToBack()和所有。這裏是你更新的fiddle