fabric.js를 사용하여 직사각형 영역에서 객체를 가져오고 해당 영역을 캔버스에 그립니다.

오니 롬

특정 직사각형 영역 (선택 상자와 동일한 동작이지만 수동으로)에서 fabric.js 객체를 가져온 다음 객체의 "선택된"픽셀 영역을 표준 캔버스에 어떻게 그릴 수 있습니까?

참고 : 캔버스가 뷰포트로 사용되고 객체가 뷰포트를 벗어날 수 있기 때문에 제 경우에는 픽셀 데이터를 직접 가져 오는 것이 불가능합니다 (예 : 패닝).

오니 롬

사각형에서 개체를 수집하고 인수로 전달 된 캔버스 컨텍스트에 렌더링 하는 함수 drawObjsTo로 _collectObjects 함수를보고 fabric.js 를 확장 하여 해결했습니다 . 해결책은 약간 더럽지 만 내가 가진 또 다른 문제를 해결할 수 있습니다. fabric.js 캔버스의 간단한 getImageData, 결과 데이터에는 선택 상자가 포함되어 있으므로이 함수는 객체의 픽셀 데이터 만 가져 오는 데에도 사용할 수 있습니다.

fabric.Canvas.prototype.drawObjsTo = function (ctx, x1, y1, x2, y2) {
    var currentObject,
        selectionX1Y1 = new fabric.Point(Math.min(x1, x2), Math.min(y1, y2)),
        selectionX2Y2 = new fabric.Point(Math.max(x1, x2), Math.max(y1, y2));

    for (var i = this._objects.length; i--; ) {
        currentObject = this._objects[i];

        if (!currentObject || !currentObject.visible) {
            continue;
        }

        if (currentObject.intersectsWithRect(selectionX1Y1, selectionX2Y2) ||
            currentObject.isContainedWithinRect(selectionX1Y1, selectionX2Y2) ||
            currentObject.containsPoint(selectionX1Y1) ||
            currentObject.containsPoint(selectionX2Y2)
        ) {
            currentObject.render(ctx);
        }
    }
};

아마도 fabric.js에서 기본적으로 그렇게 할 수있는 방법이있을 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관