마우스 클릭 캡처
마우스 클릭에 대한 응답을 제어하는 속성
객체가 마우스 클릭에 응답할지 여부와 응답하는 방식을 결정하는 두 가지 속성이 있습니다.
PickableParts
— 객체가 마우스 클릭을 캡처하는지 여부를 확인합니다.HitTest
— 객체가 캡처한 마우스 클릭에 응답할 수 있는지, 아니면 가장 가까운 선조로 전달할지 여부를 결정합니다.
객체는 응답할 수 있는 객체에 도달할 때까지 객체 계층 구조에서 차례로 클릭을 전달합니다.
마우스 클릭에 대한 응답 프로그래밍
객체가 마우스 클릭을 캡처하고 응답할 때 객체는 다음을 수행합니다.
마우스 왼쪽 버튼 클릭에 대한 응답으로 버튼 누름 함수를 실행합니다. 즉, 객체가
ButtonDownFcn
속성에 대해 콜백을 정의하면 MATLAB®이 이 콜백을 실행합니다.마우스 오른쪽 버튼 클릭에 대한 응답으로 상황별 메뉴를 표시합니다. 객체가
ContextMenu
속성을 사용하여 상황별 메뉴를 정의한 경우 MATLAB은 이 상황별 메뉴를 호출합니다.
참고
Figure에는 PickableParts
속성이 없습니다. Figure는 HitTest
속성의 설정에 상관없이 버튼 콜백 함수를 실행합니다.
참고
좌표축의 PickableParts
속성이 'none'
으로 설정된 경우 좌표축의 자식은 마우스 클릭을 캡처할 수 없습니다. 이 경우, 모든 마우스 클릭이 Figure에 의해 캡처됩니다.
PickablePart/HitTest 값 조합
PickableParts
속성과 HitTest
속성을 사용하여 다음 동작을 구현합니다.
클릭된 객체가 마우스 클릭을 캡처하고 버튼 누름 콜백이나 상황별 메뉴를 사용하여 응답합니다.
클릭된 객체가 마우스 클릭을 캡처하고, 이 마우스 클릭을 버튼 누름 콜백이나 상황별 메뉴를 사용하여 응답할 수 있는 해당 선조 중 하나로 전달합니다.
클릭된 객체가 마우스 클릭을 캡처하지 않습니다. 마우스 클릭이 클릭된 객체 뒤에 있는 객체에 의해 캡처될 수 있습니다.
다음 표에는 속성값을 기준으로 마우스 클릭에 대한 응답이 정리되어 있습니다.
좌표축의 PickableParts | PickableParts | HitTest | 마우스 클릭 결과 |
---|---|---|---|
visible/all | visible(디폴트 값) | on(디폴트 값) | 객체의 보이는 부분을 클릭하면 버튼 누름 콜백이 실행되거나 상황별 메뉴가 호출됩니다. |
visible/all | all | on | 객체의 보이지 않는 부분까지 포함하여 아무 부분이나 클릭하면 객체가 현재 객체로 설정되고 버튼 누름 콜백이 실행되거나 상황별 메뉴가 호출됩니다. |
visible/all/none | none | on/off | 객체를 클릭해도 객체가 현재 객체로 설정되지 않고 버튼 누름 콜백을 실행하거나 상황별 메뉴를 불러올 수 없습니다. |
none | visible/all/none | on/off | axes의 자식 객체를 클릭해도 버튼 누름 콜백이 실행되거나 상황별 메뉴가 호출되지 않습니다. |
MATLAB은 적절한 선조를 찾거나 해당 Figure에 도달할 때까지 각 객체의 Parent
속성을 사용하여 선조를 검색합니다.
마우스 클릭을 계층 구조 위로 전달
다음과 같은 객체의 계층 구조와 PickableParts
및 HitTest
속성 설정을 가정하겠습니다.
다음 코드는 계층 구조를 생성합니다.
function pickHit f = figure; ax = axes; p = patch(rand(1,3),rand(1,3),'g'); l = line([1 0],[0 1]); set(f,'ButtonDownFcn',@(~,~)disp('figure'),... 'HitTest','off') set(ax,'ButtonDownFcn',@(~,~)disp('axes'),... 'HitTest','off') set(p,'ButtonDownFcn',@(~,~)disp('patch'),... 'PickableParts','all','FaceColor','none') set(l,'ButtonDownFcn',@(~,~)disp('line'),... 'HitTest','off') end
선을 클릭하는 경우
선을 마우스 왼쪽 버튼으로 클릭하는 경우 다음이 수행됩니다.
선이 현재 객체가 되지만, 해당
HitTest
속성이off
이므로 선의ButtonDownFcn
콜백을 실행할 수 없습니다.선이 가장 가까운 선조(부모 좌표축)로 히트 항목을 전달하지만, 좌표축이
ButtonDownFcn
콜백을 실행할 수 없으므로 히트 항목을 Figure로 전달합니다.Figure가 콜백을 실행할 수 있으므로 MATLAB은 명령 창에
figure
를 표시합니다.
패치를 클릭하는 경우
패치의 FaceColor
가 none
입니다. 하지만, 패치의 PickableParts
가 all
이므로 빈 면과 모서리를 클릭하여 패치를 선택할 수 있습니다.
패치의 HitTest
속성이 on
이므로 패치가 현재 객체가 될 수 있습니다. 패치가 현재 객체가 되면 패치의 버튼 누름 콜백이 실행됩니다.