블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2794)
Unity3D (852)
Programming (478)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (11)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday
- 컨트롤 위에 마우스 커서가 위치해 있는지 알기위해 찾던 중..힌트가 될만한 글..


컨트롤에 마우스 이벤트를 걸고 작업을 하던 중,

마우스 클릭 상태에서는 'MouseMove'이벤트를 제외한 발생가능 이벤트,

즉 'MouseLeave'와 'MouseEnter', 'MouseHover'이벤트가 일어나지 않는 다는 것을 발견했다.

 

 

클릭 상태에서도 컨트롤 위로 마우스가 올라오거나 벗어날때 이미지를 바꾸고 싶다면

'MouseMove' 이벤드 메서드에서 컨트롤 범위를 체크하여 원하는 작업을 해주면 된다.

컨트롤의 범위를 Rectagle클래스로 잡은 후에 마우스의 현재 위치를 Rectangle클래스의 Contains함수를 이용하여

컨트롤 위에 있는지 아닌지를 확인하면 된다.

 

 

예를 들면 다음과 같다.

 

 

        private void picturebox1_MouseMove(object sender, MouseEventArgs e)
        {
               if (e.Button == MouseButtons.Left)
               {
                      Rectangle rect = new Rectangle(picturebox1.Location, picturebox1.Size);

                      int x = picturebox1.Location.X + e.X;
                      int y = picturebox1.Location.Y + e.Y;
                      Point p = new Point(x, y);

                      if (rect.Contains(p))
                             picturebox1.Image = '원하는 이미지';   // 마우스 누른 상태에서 컨트롤 위에 올라왔을때

                      else
                             picturebox1.Image = '원하는 이미지';  // 마우스 누른 상태에서 컨트롤을 벗어났을때

               }
               else
               {
                       picturebox1.Image = '원하는 이미지';  // 마우스 누르지 않은 상태에서 컨트롤 위에 올라왔을때

                }
        }

         

반응형

'Programming > C#' 카테고리의 다른 글

폼과 폼간의 전송 (부모 자식간의 전송)  (0) 2010.07.07
C# 에서의 Enum  (0) 2010.07.06
Windows Forms FAQ - Windows Forms  (0) 2010.07.02
C# 싱글톤  (0) 2010.07.02
Singleton  (0) 2010.07.02
Posted by blueasa
, |