2011-02-17 2 views
1

나는 어디에서나보고 있지만이 작업을 수행하는 방법을 보여주는 사이트를 찾을 수 없습니다. 내가 원하는 것은 축을 클릭 할 때 오브젝트를 선택하여 색상과 재료를 변경할 수 있도록하는 것입니다.MATLAB에서 axes 자식을 선택하는 방법은 무엇입니까?

아이를 선택하는 방법을 알 수 없으므로 개체를 만들 수는 있지만 선택할 수는 없습니다.

coord = ginput (2) 
x = coord(:,1) 
y = coord(:,2) 
hline = line(x,y) 

내가 삭제/편집을 선택할 수 있도록 내가 배열 개체를 작성해야하는 경우 확실하지 않다 :

은 내가 선을 만드는 데 사용하는 코드의 조각을 가지고있다. 나는 ButtonDownFcn을 사용해야 할 것이라고 믿는다. 그러나 아마도 나는 완전히 잘못된 것을하고있다.

어떤 도움

내가 어떤 정보를 누락하는 경우 나 ginput를 사용하여 좌표를 추출 할 필요가 없습니다

감사

답변

2

을 알려 주시기 바랍니다, 감사하겠습니다. 이 작업은 Figure 윈도우에 내장 된 "리스너"에 의해 자동으로 수행됩니다. 객체 (라인, 라인리스 또는 다른 핸들 그래픽 객체)에 ButtonDownFcn 속성을 사용할 수 있다고 가정하면 정확합니다.

시도가로 (0,0)에서 간단한 라인 (1,1)로 만들려면 :

hline = line([0,1],[0,1]) %# create line, save handle in hline 

그런 다음 당신이 ButtonDownFcn을 설정할 수 있습니다에, 예를 들어, 익명 함수에 대한 함수 핸들 :

set(... 
    hline, ... 
    'ButtonDownFcn', @(handle,event)(disp(['You clicked on the line!'])) ... 
); 

이제 라인을 클릭하십시오. 명령 창에 텍스트를 인쇄해야합니다.

함수는 (1) 객체 자체의 핸들 (줄)과 (2) "이벤트 구조"를 적어도 두 개의 인수를받을 수 있어야합니다. 두 번째 인수는 라인 객체를 사용할 때 비어 있다고 믿습니다. 그러나 당신의 기능은 적어도 두 가지 주장을 여전히 받아 들여야합니다 (당신이 그것을 사용하지 않더라도).

자세히 알아보기 : http://www.mathworks.com/help/techdoc/ref/line_props.html.

는 사용자 고유의 기능 (파일에 이름이 지정된 함수)를 사용할 수 있습니다 :

set(... 
    hline, ... 
    'ButtonDownFcn', @(handle,event)(namedFunction(handle,event)) ... 
); 

을 ... 또는 (예상대로)이 두 beyound 다른 인수가 있다면 당신은 구조체 배열을 사용할 수 있습니다.

+0

"set ('selected', 'on')"과 같은 것이 있습니까? 이렇게하면 내가 선택한 객체를 관리 할 수 ​​있습니까? – Audel

+0

@Audel : "ButtonDownFcn"에서 정의한 함수는 첫 번째 인수에서 핸들을받습니다. 이 핸들을 사용하여 클릭 된 객체를 더 조작 할 수 있습니다. 실제로 사용자에게 친숙하게 만들기 위해 컨텍스트 메뉴를 사용할 수 있습니다. 자세한 내용은 http://www.mathworks.com/help/techdoc/ref/uicontextmenu.html을 참조하십시오. –

+0

해결했습니다! 이것은 거의 그것을했다. 고마워요 – Audel

관련 문제