constrainChildrenOnResize
는 크기가 조정 된 셀의 아이의 위치와 크기에 대한 책임 . 즉, 아이들은 모세 혈관에 상대적으로 자신의 위치를 유지해야합니다.
mxVertexHandler
을 union
방법으로 확장하는 것이 좋습니다. this example에서 min-width/min-height 제한을 구현하는 방법을 볼 수 있습니다. 이 예제를 사용하면 제한에 대한 자체 규칙을 작성할 수 있습니다. 따라서이 기능이 때마다 호출됩니다
var vertexHandlerUnion = mxVertexHandler.prototype.union;
mxVertexHandler.prototype.union = function (bounds) {
var result = vertexHandlerUnion.apply(this, arguments);
var coff = bounds.width/bounds.height
result.width = result.height * coff;
return result;
};
당신이 크기 변경을 드래그하는 동안 마우스를 이동 :
여기 내 간단한 솔루션입니다.
경계 - 항상 객체, 동일 및
결과 (크기 조정 전) 셀의 기존 형상을 표현 - 개체를 적용하려고하는 새 값을 나타냅니다. 이 라인 광고 return
문 사이에 결과를 수정하는 데 필요한 코드를 배치 할 수 있습니다.
간단한 예제에서 나는 셀의 너비와 높이 사이의 초기 관계를 얻은 다음 (coff) coff와 새 높이를 곱하여 새로운 너비를 설정합니다. 코너 나 위/아래를 드래그하면 작동합니다. 실제 프로젝트에서는이 로직을 약간 확장해야합니다. 그렇지 않으면 표시되는 코너 핸들러 만 만들어야합니다.
그런데이 코드는 그래프의 크기를 조정할 수있는 모든 셀에서 작동합니다. 이미지 나 다른 종류의 셀에만 적용하려면 다시 계산하기 전에 조건을 입력하고 셀 유형을 확인할 수 있습니다. 현재 셀 또는 그 상태를 조합 함수 내부에 this.state.cell
또는 this.state
을 통해 가져올 수 있습니다. 예를 들어 vertec에만 해당 :
... ...
var result = vertexHandlerUnion.apply(this, arguments);
if (this.state.cell.isVertex()) {
//calculations here
}
return result;