Main Content

마우스 클릭 캡처

마우스 클릭에 대한 응답을 제어하는 속성

객체가 마우스 클릭에 응답할지 여부와 응답하는 방식을 결정하는 두 가지 속성이 있습니다.

  • PickableParts — 객체가 마우스 클릭을 캡처하는지 여부를 확인합니다.

  • HitTest — 객체가 캡처한 마우스 클릭에 응답할 수 있는지, 아니면 가장 가까운 선조로 전달할지 여부를 결정합니다.

객체는 응답할 수 있는 객체에 도달할 때까지 객체 계층 구조에서 차례로 클릭을 전달합니다.

마우스 클릭에 대한 응답 프로그래밍

객체가 마우스 클릭을 캡처하고 응답할 때 객체는 다음을 수행합니다.

  • 마우스 왼쪽 버튼 클릭에 대한 응답으로 버튼 누름 함수를 실행합니다. 즉, 객체가 ButtonDownFcn 속성에 대해 콜백을 정의하면 MATLAB®이 이 콜백을 실행합니다.

  • 마우스 오른쪽 버튼 클릭에 대한 응답으로 상황별 메뉴를 표시합니다. 객체가 ContextMenu 속성을 사용하여 상황별 메뉴를 정의한 경우 MATLAB은 이 상황별 메뉴를 호출합니다.

참고

Figure에는 PickableParts 속성이 없습니다. Figure는 HitTest 속성의 설정에 상관없이 버튼 콜백 함수를 실행합니다.

참고

좌표축의 PickableParts 속성이 'none'으로 설정된 경우 좌표축의 자식은 마우스 클릭을 캡처할 수 없습니다. 이 경우, 모든 마우스 클릭이 Figure에 의해 캡처됩니다.

PickablePart/HitTest 값 조합

PickableParts 속성과 HitTest 속성을 사용하여 다음 동작을 구현합니다.

  • 클릭된 객체가 마우스 클릭을 캡처하고 버튼 누름 콜백이나 상황별 메뉴를 사용하여 응답합니다.

  • 클릭된 객체가 마우스 클릭을 캡처하고, 이 마우스 클릭을 버튼 누름 콜백이나 상황별 메뉴를 사용하여 응답할 수 있는 해당 선조 중 하나로 전달합니다.

  • 클릭된 객체가 마우스 클릭을 캡처하지 않습니다. 마우스 클릭이 클릭된 객체 뒤에 있는 객체에 의해 캡처될 수 있습니다.

다음 표에는 속성값을 기준으로 마우스 클릭에 대한 응답이 정리되어 있습니다.

좌표축의 PickablePartsPickablePartsHitTest마우스 클릭 결과

visible/all

visible(디폴트 값)

on(디폴트 값)

객체의 보이는 부분을 클릭하면 버튼 누름 콜백이 실행되거나 상황별 메뉴가 호출됩니다.

visible/all

all

on

객체의 보이지 않는 부분까지 포함하여 아무 부분이나 클릭하면 객체가 현재 객체로 설정되고 버튼 누름 콜백이 실행되거나 상황별 메뉴가 호출됩니다.

visible/all/none

none

on/off

객체를 클릭해도 객체가 현재 객체로 설정되지 않고 버튼 누름 콜백을 실행하거나 상황별 메뉴를 불러올 수 없습니다.

none

visible/all/none

on/off

axes의 자식 객체를 클릭해도 버튼 누름 콜백이 실행되거나 상황별 메뉴가 호출되지 않습니다.

MATLAB은 적절한 선조를 찾거나 해당 Figure에 도달할 때까지 각 객체의 Parent 속성을 사용하여 선조를 검색합니다.

마우스 클릭을 계층 구조 위로 전달

다음과 같은 객체의 계층 구조와 PickablePartsHitTest 속성 설정을 가정하겠습니다.

다음 코드는 계층 구조를 생성합니다.

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를 표시합니다.

패치를 클릭하는 경우

패치의 FaceColornone입니다. 하지만, 패치의 PickablePartsall이므로 빈 면과 모서리를 클릭하여 패치를 선택할 수 있습니다.

패치의 HitTest 속성이 on이므로 패치가 현재 객체가 될 수 있습니다. 패치가 현재 객체가 되면 패치의 버튼 누름 콜백이 실행됩니다.