본문 바로가기
programming language/MATLAB

MATLAB figure ButtonDownFcn

by __observer__ 2012. 2. 22.
반응형

 

오늘은 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

댓글