오늘은 MATLAB figure 창을 클릭 했을 때 특정 동작을 하도록 하는 Button down callback function 에 대해 설명 드립니다.
아래 예제 코드를 보면서 설명 드리겠습니다.
buttondownfnc_test.m file
x=1:10;
y=x*2;
h=figure; % 그림 창의 handle , h
h_plot=plot(x,y,'r:.'); % 그래프의 handle , h_plot
grid on ;
% 그림 창의 button down function 을 {@grid_ONOFF2, h_plot} 로 설정
set(h,'ButtonDownFcn',{@grid_ONOFF2, h_plot})
위 예제 코드는 단순하게 y=2x 의 직선을 그리고
그림 창을 누르면 선이 없어지거나 다시 생기게 만드는 예제 입니다.
먼저 h 라는 그림 창의 핸들과 h_plot 이라는 그래프의 handle 을 얻었습니다.
handle 이 무언지 잘 모르겠다 하시는 분들은 자동차의 핸들을 생각하면 될 것 같습니다.
자동차의 핸들을 잡아야 자동차를 맘대로 할 수 있는 것처럼 ~~
그래프나 그림도 핸들을 통해서 맘대로 조정할 수 있는 것입니다.
위 코드의 grid_ONOFF2 함수는 다음과 같이 코딩 후 grid_ONOFF2.m 파일로 저장 했습니다.
grid_ONOFF2.m file
function grid_ONOFF2(~, ~, arg1)
persistent state;
if isempty(state)
state=1;
end
if state==1
set(arg1,'visible','off'); % 그래프를 보이지 않게
state=0;
else
set(arg1,'visible','on'); % 그래프를 보이게
state=1;
end
end
grid_ONOFF2 함수의 첫 번째argument 는 함수를 호출하는 object의 handle 이 들어가게 됩니다.
두 번째 argument 는 호출시의 event 가 들어가게 되는데
위 함수에서는 첫 번째와 두 번째 argument 를 이용하지 않기 때문에 ~(물결)로 표시는 한 것입니다.
세 번째 argument 로 arg1 이라는 또 다른 입력을 받을 수 있게 했습니다.
buttondownfnc_test.m 파일에서 {@grid_ONOFF2, h_plot} 라고 되어 있는 부분의 h_plot 이라는 그래프의 핸들이 grid_ONOFF2 함수의 arg1 로 전달이 되는 겁니다.
위 함수 내부의 코드들은 단순히 그림 창을 한번 누르면 h_plot 을 보이게 만들고
그림 창을 또 한번 누르면 보이지 않게 만들고 하는 코드 입니다.
그럼 이제 buttondownfnc_test.m file 을 실행 시켜보죠.
그럼 아래 그림 같은 그래프가 나옵니다.
그럼 이제 위 그래프의 회색 부분을 마우스로 클릭해 보시기 바랍니다.
아래 그림처럼 그래프가 사라지는 것을 확인 하실 수 있을 겁니다.
재미있죠? 그럼 오늘의 포스팅은 여기서 마무리 하겠습니다.
'programming language > MATLAB' 카테고리의 다른 글
MATLAB FFT 처리 속도 (0) | 2012.03.19 |
---|---|
MATLAB varargin, varargout (6) | 2012.03.12 |
MATLAB GUI 창 크기 조절 (4) | 2012.03.03 |
MATLAB GUI (4) | 2012.02.24 |
Simulink Algebraic Loop (0) | 2012.02.13 |
MATLAB dos 명령 사용하기 (0) | 2011.12.21 |
MATLAB convolution (151) | 2011.11.20 |
Window command 에서 MATLAB 실행 방법 (0) | 2011.11.20 |
댓글