특정 직사각형 영역 (선택 상자와 동일한 동작이지만 수동으로)에서 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] 삭제
몇 마디 만하겠습니다