Blog Content

    티스토리 뷰

    29.C#_WinForm - C# MouseMove, C# MouseDown 이벤트

    반응형

    C# Mouse 이벤트를 이용하여 C#폼에서 그림을 그리는 예제입니다.
    마우스 왼쪽 클릭시 선 그리기, 마우스 오른족 클릭시 원 그리기


            메뉴추가 :
                    FrmMain - 샘플 -MouseMove, MouseDown

    FrmMouseEvent 속성
    마우스
    - MouseDown : 마우스 포인터가 구성요소위에 있을 때 이벤트
    - MouseMove : 마우스 포인터를 구성요소위로 이동 할 때 이벤트
    모양 - Print : 컨트롤을 다시 그릴 때 발생하는 이벤트

    FrmMouseEvent.cs
    using System.Collections; //네임스페이스 추가

    namespace WinFrmMain.Sample
    {
        public partial class FrmMouseEvent : Form
        {
            private ArrayList al;
            private Point p; //좌표
            public FrmMouseEvent()
            {
                InitializeComponent();
                al = new ArrayList();
            }

            private void FrmMouseEvent_MouseDown(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Right)
                {
                    //그래픽 객체 생성
                    Graphics g = CreateGraphics();
                    //원 그리기
                    g.DrawEllipse(Pens.Red, e.X, e.Y, 10, 10);
                    //객체 해제
                    g.Dispose();
                }
                p.X = e.X;
                p.Y = e.Y;
            }

            private void FrmMouseEvent_MouseMove(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    Graphics g = this.CreateGraphics();
                    g.DrawLine(Pens.Blue, p.X, p.Y, e.X, e.Y);
                    //좌표값 보관
                    al.Add(Rectangle.FromLTRB(p.X, p.Y, e.X, e.Y));
                    p.X = e.X; p.Y = e.Y;
                    g.Dispose();
                }
            }

            private void FrmMouseEvent_Paint(object sender,
                    PaintEventArgs e)
            {
                //지정된 좌표값 다시 그리기
                foreach (Rectangle r in al)
                {
                    e.Graphics.DrawLine(
                    Pens.Blue,
                    r.Left, r.Top, r.Right, r.Bottom);
                }
            }
        }
    }

    결과화면

    [그림29-1]

    29WinFrmMain.zip
    다운로드

    반응형

    Comments