fabric.jsピクチャフィレット方法(テスト)

7006 ワード

1つ:画像のサイズをスケールして、外のマップの円角、画像の色と円のモーメントの色が一致する必要があります.そうしないと、画像は四角です.
    var rect = new fabric.Rect({
                        left:0,
                        top:0,
                        fill: 'white',// 
                        originX:'center',
                        originY: 'center',
                        width: img.width,
                        height: img.height,
                        rx: 10,
                        ry: 10,
                        hasControls: true
                    });
                    rect.setGradient('fill', {
                          x1: 0,
                          y1: 0,
                          x2: rect.width,
                          y2: 0,
                          colorStops: {
                            0: "red",
                            0.2: "orange",
                            0.4: "yellow",
                            0.6: "green",
                            0.8: "blue",
                            1: "purple"
                          }
                        });
                    var img1 = img.set({
                        width: img.width-20,
                        height: img.height-20,
                        originX:'center',
                        originY: 'center'
                    });
                    var group = new fabric.Group([ rect, img1 ], {
                      left: 0,
                      top: 0
                    });
                    canvas.add(group);

2つ:
    var objImg = null;
            fabric.Image.fromURL(data, function(oImg) {
                    oImg.set({
                                width: 280,
                                height: 200,
                                left: 210,
                                top: 146,
                                originX: 'center',
                                originY: 'center',
                                selectable: true,
                                perPixelTargetFind: true,
                                transparentCorners: false
                             });
                    canvas.setActiveObject(oImg);
                    objImg  = canvas.getActiveObject();
                    objImg.clipTo = function(ctx) {
                        console.log("ctx");
                        console.log(ctx);
                        /* ctx.rect(
                            0,
                            0,
                            -140,
                            -100
                        ); *// 
                        //ctx.arc(0, 0, 100, 0, Math.PI * 2, true);// 
                        ctx.ellipse(0,0,170,140,0,Math.PI * 2, false);// , 。
                    };
                    canvas.add(oImg);
                });

直接画像を追加し、操作しない
                oImg.width=280;
                oImg.height=200;
                oImg.top = 55;
                oImg.left = 93;
                oImg.setControlsVisibility({
                    'mt' : false,
                    'tl' : false,
                    'bl' : false,
                    'mr' : false
                });
                oImg.set({
                    borderColor: 'green',
                    cornerColor: 'orange',
                    cornerSize: 8,
                    transparentCorners: false
                });
                canvas.setActiveObject(oImg);
            canvas.add(oImg);