2012-01-04 7 views
1

특히 wxHaskell에서 일반적으로 항목들 사이에 관계가 있음을 보여주기 위해 나란히있는 두 목록의 항목 사이에 선을 그릴 수 있기를 원합니다. 아래의 모형과 같은 것.wxWidgets을 사용하면 두 목록의 항목간에 선을 그릴 수 있습니까?

two list boxes with arrows between items

+0

그냥 두 개의 목록이 ** 다른 부모 창 (각 창마다 자체적으로 캡슐화 된 두 개의 목록과 대조적으로) ** 내에 있습니까? – dukedave

+0

예, 단일 창에 있습니다. – mentics

답변

1

아마도 내가 이해하지 못하는 설정에 대해 뭔가가있을 수 있지만 이는 매우 간단합니다.

입력 1과 출력 3 사이에 선을 그려야한다고 가정 해보십시오.

  • 두 목록의 부모 인 창의 좌표 시스템에는 네 개의 좌표가 필요합니다. 요

  • 자이와 XO는 상수

  • 이순신이며, 요 하나 귀하의 목록에있는 행과 항목의 인덱스 번호의 높이에만 의존, XI, 이순신, XO를 호출 할 수 있습니다.

  • 이제 부모 창

  • 에서 wxClientDC을 만들고 DC에서 선을 그립니다.

    parentWindowDC.DrawLine (xi, yi, xo, yo);

목록 창 상단에 화살표가 표시되어 있습니다. 위는 그들을 뒤에 이끌어 낼 것이다. 그것들을 상단에 그리려면 약간의 계산 기하학을 수행해야합니다. 그런 다음 선 (xi, yi, xo, yo)이 두 목록 상자의 모서리와 교차하는 점을 계산할 수 있습니다.그런 다음 같은 브러시, XI, 이순신, 입력 창에 입력 상자 가장자리 교차로 사이

  • 를 사용하여 세 개의 선을 그릴 DC 부모 창에서 두 교차로 사이
  • DC
  • 사이 출력 상자 가장자리와 출력 상자의 xo, yo DC
0

은 wxWidgets에있는 그에 대한 클래스가 없지만 몇 가지 가능한 해결 방법이 있습니다 : 당신은 크로스 플랫폼 솔루션을 필요로하는 경우

  • 다음 확실히이를 구현하는 간단한 방법이 없다가. 이 화살표의 형태를 가지며 프레임과 함께 이동하는 비 직사각형의 최상위 창을 만들려고 할 수 있습니다. 그것은 끔찍한 해결책이지만 나는 단지 그것을 언급했다.
  • 앱이 Windows 인 경우 CodeProject에서 Locus Effect 문서를 살펴볼 수 있습니다. 어쩌면 당신이 원하는 기능을 어떻게 구현할 수 있는지에 대한 힌트를 제공 할 것입니다.
  • Windows의 경우 사용자는 DirectX Overlay 또는 SetWindowRgn 기능을 사용하는 비 직사각형 컨트롤을 사용할 수 있습니다. 직사각형이 아닌 버튼에 대해서는 제대로 작동하므로 귀하의 경우에 잘 작동해야합니다.
  • 다른 모든 솔루션은 플랫폼에 따라 달라지며 '기본'IMHO 코딩이 필요합니다.
관련 문제