본문 바로가기
Programing/C#

Devexpress에서 DiagramControl에 클릭시 최상위 레이어의 정보를 가져올 수 있는 방법

by Benedictus711 2024. 11. 18.
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

댓글