2013-10-21 3 views
0

마우스 이벤트에 문제가 있습니다!ILNumerics 마우스 이벤트

이벤트 MouseEnter 및 MouseLeave에 가입했습니다. 마우스 커서 예제가 패널의 가운데 정확히 일치하는 경우 MouseEnter 및 MouseLeave 이벤트가 트리거됩니다. 그 이유는 무엇입니까?

내 목표는 마우스 커서가 3D PlotCube에있을 때부터 시작하고 그렇지 않을 때부터 감지하는 것입니다.

코드 :

scene.MouseEnter += ILSurface_MouseEnter; 
scene.MouseLeave += ILSurface_MouseLeave; 
+0

어떤 언어를 사용하고 있습니까? 귀하의 질문에서 짐작할 수 없습니다 –

+0

설명서를 읽었습니까? http://ilnumerics.net/mouse-events.html - 최소한의 (!하지만 완전한) 코드 예제를 게시하고 정확히 무엇을 기대했으며 무엇을 obeserve했는지 설명하십시오. 감사! –

답변

0

플롯 큐브가 screenRect의 사각형의 전체 영역에 대한 이벤트를 잡는다. 표준 설정에서이 사각형은 (0,0,1,1)로 설정되어 전체 패널을 채 웁니다. 따라서 패널에 여러 개의 그림 용 큐브/카메라가 없으면 기본적으로 마우스는 항상 그림 큐브에 놓입니다.

그럼에도 불구하고 MouseEnter 및 MouseLeave 이벤트의 기능을 표시하기 위해 플로트 큐브 대신 내에있는 예제를 게시 할 것입니다. 마우스가 플롯에 들어갈 때 폼의 제목 표시 줄에 "On Plot"을 씁니다. "Off Plot"은 마우스가 음모를 떠나는 순간 작성됩니다. 다음과 같이 신선한 패널 및 설정 ILNumerics와

시작 : 순서를 Form1과 더블 클릭 위에 http://ilnumerics.net/visualization-api-quick-start-guide.html

에서 마우스를 끌어 ILPanel는 자동차의 코드로 전환이 ilPanel1_Load 이벤트 핸들러를 생성합니다. 다음 코드로 핸들러를 교체 : 마우스가 플롯 또는없는 경우 가 Hadling Mouse Enter and Mouse Leave in ILNumerics

형태의 제목은 지금, 반영

private void ilPanel1_Load(object sender, EventArgs e) { 

    var surfPlot = new ILSurface(ILMath.tosingle(ILSpecialData.sincf(50, 40))) { 
     Colormap = Colormaps.Prism 
    }; 

    var pc = ilPanel1.Scene.Add(new ILPlotCube(twoDMode: false) { 
     surfPlot 
    }); 

    surfPlot.MouseEnter += (_s, _a) => { 
     if (!_a.DirectionUp) 
      Text = "On Plot - Target: " + _a.Target.ToString(); 
    }; 
    surfPlot.MouseLeave += (_s, _a) => { 
     if (!_a.DirectionUp) 
      Text = "Off Plot - Target: " + _a.Target.ToString(); 
    }; 
} 

이 다음 이미지와 유사한 결과를 생성합니다. 이것은 플롯의 회전/모양에 관계없이 작동한다는 점에 유의하십시오. ILNumerics의 마우스 이벤트 처리에 대한 전체 설명서는 다음에서 찾을 수 있습니다. http://ilnumerics.net/mouse-events.html