저는 하나의 프로젝트에서 fabric.js를 사용합니다. 여기에서 사용자는 캔버스에 그릴 수 있고 canvas.toDataURL() 함수를 사용하여 png 이미지에 저장할 수 있습니다. 그러나 사용자가 개체를 이동하고 저장 버튼을 클릭하면 이전에 이동 한 개체의 테두리와 모서리가 저장됩니다 (개체를 이동하거나 크기를 조정할 때 테두리가 항상 표시됨). 저장하기 전에 개체 테두리를 제거하는 방법이 필요합니다.Canvas 객체에서 테두리와 모서리를 제거하는 방법은 무엇입니까? [Fabric.js]
3
A
답변
13
예. 당신은 이동 경로가 그려진 스케일링 사용자의 아이디어를 좋아하는 경우에
canvas.deactivateAll().renderAll();
(renderAll
모든 오브젝트의 비활성화 후 실제 시각적 상태를 업데이트)
0
: 당신은 아마 이미지를 저장하기 전에 모든 개체를 비활성화 할 캔버스. 나는 kangax의 제안과 함께 갈 것입니다.
또는 동작을 약간 변경하려는 경우 각 경로 요소의 hasBorders
및 hasControls
필드를 false로 설정할 수 있습니다. 그렇다면 컨트롤/테두리를 볼 수 없으므로 절대로 인쇄 할 수 없습니다. 그러나 경로를 회전하거나 비율을 조정할 수는 없지만 이동시킬 수는 있습니다.
또는 한 걸음 더 나아가 경로를 선택 불가능하게 만들 수 있습니다 (이동할 수 없도록 만들 수도 있고 원치 않을 수도 있습니다). 따라서 각 경로의 selectable
필드를 false로 설정할 수 있습니다. 당신이 fabric.js
fabric.Canvas.prototype._finalizeDrawingPath = function() {
this.contextTop.closePath();
this._isCurrentlyDrawing = false;
var minX = utilMin(this._freeDrawingXPoints),
minY = utilMin(this._freeDrawingYPoints),
maxX = utilMax(this._freeDrawingXPoints),
maxY = utilMax(this._freeDrawingYPoints),
ctx = this.contextTop,
path = [ ], xPoint, yPoint,
xPoints = this._freeDrawingXPoints,
yPoints = this._freeDrawingYPoints;
path.push('M ', xPoints[0] - minX, ' ', yPoints[0] - minY, ' ');
for (var i = 1; xPoint = xPoints[i], yPoint = yPoints[i]; i++) {
path.push('L ', xPoint - minX, ' ', yPoint - minY, ' ');
}
path = path.join('');
if (path === "M 0 0 L 0 0 ") {
return;
}
var p = new fabric.Path(path);
p.fill = null;
p.stroke = this.freeDrawingColor;
p.strokeWidth = this.freeDrawingLineWidth;
//Tyson Benson:
//Add these lines to remove borders/controls
p.hasBorders = p.hasControls = false;
//Or add this line to make the path unselectable
p.selectable = false;
this.add(p);
p.set("left", minX + (maxX - minX)/2).set("top", minY + (maxY - minY)/2).setCoords();
this.renderAll();
this.fire('path:created', { path: p });
};
을 포함 후에
내가 약간의 공백을 제거한 자신의 js 파일에 다음 코드를 추가하여, fabric.js에서_finalizeDrawingPath
을 무시할 수 당신이 모든 것을 쉽게 만들려면 간결함을위한 설명 (이 주석에 대해서는 fabric.js를 참조하십시오).
p.hasBorders = p.hasControls = false;
또는 p.selectable = false;
을 설정할 수 있습니다. 둘 다 필요 없다.
관련 문제
- 1. Fabric.js 캔버스에서 오버레이 이미지를 제거하는 방법은 무엇입니까?
- 2. 하나의 jQuery UI 위젯에서 둥근 모서리를 제거하는 방법은 없지만 다른 모서리를 제거하는 방법은 무엇입니까?
- 3. JavaScript 객체에서 부분 문자열을 제거하는 방법은 무엇입니까?
- 4. 그룹화 된 테이블보기에서 둥근 모서리를 제거하는 방법은 무엇입니까?
- 5. Fabric.js 객체 크기
- 6. Fabric.js - 직사각형 채우기 변경
- 7. HTML5 Canvas 스트로크에서 페더 처리 된 가장자리를 제거하는 방법은 무엇입니까?
- 8. JavaScript의 File-API 객체에서 속성을 제거하는 방법은 무엇입니까?
- 9. 표시 객체에서 모든 이벤트 리스너를 제거하는 방법은 무엇입니까?
- 10. 난 그냥 fabric.js 시작
- 11. UIButton 컨트롤에서 날카로운 사각형 모서리를 제거하는 방법?
- 12. UITableView에서 모서리를 둥글게 만드는 방법은 무엇입니까?
- 13. 앱 화면에서 둥근 모서리를 만드는 방법은 무엇입니까?
- 14. 캔버스에서 개체를 제거하는 방법은 무엇입니까?
- 15. json 객체에서 출력하는 방법은 무엇입니까?
- 16. XAML의 Canvas 요소를 코드 숨김 Canvas 속성에 바인딩하는 방법은 무엇입니까?
- 17. hit detect canvas JS
- 18. Fabric.js + Google 글꼴
- 19. 캔버스의 마우스 오프셋 [fabric.js]
- 20. 문서 흐름에서 요소를 효과적으로 제거하는 방법은 무엇입니까?
- 21. 내가 제대로 질문을 이해한다면 fabric.js
- 22. UINavigationBar 및 UIToolbar에서 둥근 모서리를 사용자 정의 배경 이미지로 제거하는 방법은 무엇입니까?
- 23. CSS 테두리 모양 - 오른쪽 상단 모서리를 자르는 방법
- 24. 투명 테두리와 모서리가 둥근 Flex 이미지를 만드는 방법은 무엇입니까?
- 25. 중복을 제거하는 방법은 무엇입니까?
- 26. 창에서보기를 제거하는 방법은 무엇입니까?
- 27. Hadoop을 제거하는 방법은 무엇입니까?
- 28. 두꺼운 테두리와 템플릿
- 29. Android에서 Canvas drawing-drawBitmap을 최적화하는 방법은 무엇입니까?
- 30. 색상 테두리와 불투명도가있는 상자 내 곡선 상자
새 버전의 "deactivateAll"패브릭이 작동하지 않으면 "discardActiveObject"를 사용해야합니다. –