2012-12-05 7 views
2

몇 가지 가능한 이미지가있는 C# WPF 응용 프로그램이 있는데 일부는 이미지 내에 불규칙한 모양이 있습니다. 이미지에서 다른 모양을 클릭 할 때 다른 이벤트를 생성하고 싶습니다.임의의 이미지에 대한 클릭 가능한 맵 구현

예를 들어 이미지가 집 앞에이었다 경우 손잡이,

이미지의 크기를 재조정 할 수있다 등 문, 창문, 지붕, 클릭 할 때, 나는 다른 이벤트를 genereate 것 .

그리드와 도형을 수동으로 처리 할 수 ​​있지만 좀 더 우아한 방법이 있어야합니다.

원본과 비슷한 "그림자"이미지를 만들 수 있지만 클릭 가능한 영역이 다른 색으로 채워지는 기술을 보았다고 생각했습니다. 클릭 할 수있는 영역의 "컬러 맵". 그러면 클릭 핸들러가 그림자 이미지의 색상에 액세스하여 적절한 이벤트를 발생시킬 수 있습니다. 그러나 그림자 이미지를 디스플레이 이미지의 "아래"에 숨기고 클릭 이벤트 처리기에서 색상을 가져 오는 방법을 파악할 수 없었습니다.

나는 이것을 처리 할 수있는 좋은 방법이있을 것이라고 확신한다. 나는 보통 이미지를 다루지 않기 때문에 완전히 무지하다.

감사합니다.

+0

색상은 초기 설계/레이아웃에 도움이 될 것입니다. 설정이 끝나면 불투명도를 0으로 설정하십시오. 이렇게하면 이미지가 투명 해져 원본 이미지를 볼 수 있지만 클릭은 오버레이로 이동합니다. – cadrell0

+0

그럴 수도 있습니다. 시도해 보겠습니다. –

답변

0

"그림자 이미지"보다 멋진 이미지를 Z 순서로 높이고 topImage.IsHitTestVisible = false를 설정하는 방법은 어떻습니까?

이렇게하면 클릭이 상단의 보이는 이미지를 우회하여 기본 그림자 이미지 클릭 핸들러로 바로 이동합니다.

프로덕션 코드에서 사용한 또 다른 기술은 Image에서 새 클래스를 파생시키고 HitTestCore를 재정의하고 픽셀 값을 직접 테스트 한 다음 특정 색상 또는 불투명도 인 경우 다른 개체를 반환하는 것입니다. 이렇게하면 모든 행동을 제어 할 수 있습니다.

+0

이 작동합니다. 나는 이미지를 생성하고, 맵핑해야 할 영역을 확고하게 채워서 다른 이미지를 쉽게 생성 할 수 있으며 반환 된 컬러를 기반으로해야 할 작업을 파악할 수 있습니다. 좋은. –

관련 문제