2016-06-05 4 views
0

이미지 드래그 앤 드롭을 구현 했으므로 크기 조정 중에 이미지 비율을 제한하고 싶습니다.이미지 크기 조정 중 비율 제한

/** 
* Variable: constrainChildrenOnResize 
* 
* Specifies if children should be constrained according to the <constrainChildren> 
* switch if cells are resized (including via <foldCells>). Default is false for 
* backwards compatiblity. 
*/ 
mxGraph.prototype.constrainChildrenOnResize = false; 

내가 true로 설정하지만이 작동하지 :이 기능을 필요로의

어떤 API/부동산 ..

답변

0

constrainChildrenOnResize는 크기가 조정 된 셀의 아이의 위치와 크기에 대한 책임 . 즉, 아이들은 모세 혈관에 상대적으로 자신의 위치를 ​​유지해야합니다.

mxVertexHandlerunion 방법으로 확장하는 것이 좋습니다. 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; 
관련 문제