마우스 클릭을 그룹의 부모 객체로 전달하기
이 예제에서는 객체 그룹이 마우스 클릭을 그룹 내 모든 객체에서 동작하는 부모 객체로 전달하는 방법을 보여줍니다.
목적 및 설계
객체 그룹 내 임의의 멤버에 대한 단일 마우스 클릭으로 그룹 내 모든 객체에 영향을 미치는 단일 버튼 누름 콜백을 실행시키는 경우를 가정하겠습니다.
그룹에 추가할 그래픽스 객체를 정의합니다.
hggroup
객체를 그래픽스 객체의 부모로 할당합니다.아무 객체나 클릭되었을 때 실행할 함수를 정의합니다. 이 함수의 함수 핸들을
hggroup
객체의ButtonDownFcn
속성에 할당합니다.마우스 클릭이 객체의 부모에 전달되도록 그룹의 모든 객체에 대한
HitTest
속성을off
로 설정합니다.
객체 계층 구조 및 주요 속성
이 예제에서는 다음과 같은 객체 계층 구조를 사용합니다.
MATLAB 코드
다음 두 함수를 사용하여 파일을 생성합니다.
pickPatch
— 그래픽스 객체를 생성하는 메인 함수입니다.groupCB
—hggroup
콜백에 대한 로컬 함수입니다.
pickPatch
함수는 세 개의 patch 객체를 생성하고 hggroup
객체를 부모로 지정합니다. 각 패치의 HitTest
속성을 off로 설정하면 마우스 클릭이 부모로 전달됩니다.
function pickPatch figure x = [0 1 2]; y = [0 1 0]; hGroup = hggroup('ButtonDownFcn',@groupCB); patch(x,y,'b',... 'Parent',hGroup,... 'HitTest','off') patch(x+2,y,'b',... 'Parent',hGroup,... 'HitTest','off') patch(x+3,y,'b',... 'Parent',hGroup,... 'HitTest','off') end
groupCB
콜백은 hggroup
에 포함된 모든 객체에서 동작합니다. groupCB
함수는 콜백으로 전달되는 콜백 소스 인수(src
)를 사용하여 patch 객체의 핸들을 가져옵니다.
hggroup
객체의 핸들인 이 콜백 소스 인수를 사용하면 글로벌 데이터를 생성하거나 추가 인수를 콜백으로 전달할 필요가 없습니다.
패치를 마우스 왼쪽 버튼으로 클릭하면 세 개 패치 모두의 면 색이 임의의 RGB 색 값으로 변경됩니다.
function groupCB(src,~) s = src.Children; set(s,'FaceColor',rand(1,3)) end
콜백 함수에 대한 자세한 내용은 그래픽스 객체에 대한 콜백 만들기 항목을 참조하십시오.