Programing/C#
Devexpress에서 DiagramControl에 클릭시 최상위 레이어의 정보를 가져올 수 있는 방법
Benedictus711
2024. 11. 18. 10:40
728x90
18.1 이전 버전이라면 아래와 같이 구현이 가능합니다.
DiagramHitInfo 클래스를 사용하여 최상위 레이어의 정보를 가져올 수 있습니다.
private void diagramControl1_MouseDown(object sender, MouseEventArgs e)
{
// 마우스 왼쪽 버튼을 눌렀을 때만 처리합니다.
if (e.Button != MouseButtons.Left)
return;
// 마우스 클릭 위치에 해당하는 Item을 찾습니다.
DiagramHitInfo hitInfo = diagramControl1.CalcHitInfo(e.Location);
// 최상위 레이어에 해당하는 Item을 찾습니다.
DiagramItem topMostItem = hitInfo.HitObject;
// 최상위 레이어에 Item이 있는 경우 처리합니다.
if (topMostItem != null)
{
// 최상위 레이어에 해당하는 Item의 정보를 가져옵니다.
// 예: Item의 위치, 크기, 색상 등
// 이 정보를 이용해서 필요한 작업을 수행합니다.
// ...
}
}
이후 버전부터는 HitInfo 클래스의 Item 속성을 사용하여 최상위 레이어의 Item을 가져올 수 있습니다.
private void diagramControl1_MouseDown(object sender, MouseEventArgs e)
{
// 마우스 왼쪽 버튼을 눌렀을 때만 처리합니다.
if (e.Button != MouseButtons.Left)
return;
// 마우스 클릭 위치에 해당하는 Item을 찾습니다.
DiagramHitInfo hitInfo = diagramControl1.CalcHitInfo(e.Location);
// 최상위 레이어에 해당하는 Item을 찾습니다.
DiagramItem topMostItem = hitInfo.Item;
// 최상위 레이어에 Item이 있는 경우 처리합니다.
if (topMostItem != null)
{
// 최상위 레이어에 해당하는 Item의 정보를 가져옵니다.
// 예: Item의 위치, 크기, 색상 등
// 이 정보를 이용해서 필요한 작업을 수행합니다.
// ...
}
}
HitInfo 클래스에는 다양한 정보를 얻을 수 있는 속성들이 있습니다. 예를 들어, Item 속성은 마우스 클릭 위치에 해당하는 최상위 레이어의 Item을 반환하고, DiagramShape 속성은 마우스 클릭 위치에 해당하는 Item이 DiagramShape일 경우 해당 Shape을 반환합니다. 이 외에도, Edge 속성을 사용하여 마우스 클릭 위치가 Edge 위에 있는지 여부를 확인할 수 있습니다.
728x90