Exemple #1
0
 //6. 하나의 도형을 마치는 기준은 마우스를 뗄 때다. mouseUp 이벤트 핸들러를 이용하자
 private void Form1_MouseUp(object sender, MouseEventArgs e)
 {
     //링크드리스트의 마지막에 나의 myData를 집어놓고, 다음 나의 myData를 위해 초기화(new)를 새로 해준다
     //  -myData를 집어넣었다는 건, 내가 지금 그리는 도형의 (색상/위치/크기/배열)정보를 넘겼다는 거다
     total_lines.AddLast(myData);
     myData = new CMyData();
 }
Exemple #2
0
        //그림판은 언제 동작하냐면, 내가 마우스로 그릴 때다. -> 마우스를 클릭할 때. 이벤트로 만들자
        // 4. 마우스다운 이벤트
        //  - 처음에는, 빨간/사각/1size의 점을 그리도록 한다
        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            // 4-1. 마우스 [오른쪽/왼쪽]있으니, 왼쪽을 클릭할 때라고 조건문을 걸자
            if (e.Button == MouseButtons.Left)
            {
                //4-2. 전역에서 선언한 maDaya를 초기화시켜주자
                myData       = new CMyData();
                myData.Shape = iCurrentShape;

                // 모양/넓이, 색상 를 정해주자
                // 4-3. iCurrentShape는 0(사각형)/1(원형)/2(자유곡선)이 있다
                //  -자유곡선의 크기는 현재 크기 그대로 유지하도록 한다
                //  -원형/사각형의 크기는 실선보다 굵기가 굵어야하니, 그 10배로 수정해준다
                if (iCurrentShape == 2)
                {
                    myData.Width = iCurrentWidth;
                }
                else
                {
                    myData.Width = 10 * iCurrentWidth;
                }

                // 4-4. 색상
                myData.Color = iCurrentColor;

                // 4-5. 위치 조정
                //  - 내 마우스의 좌표를 받아 LinkedList에 넣도록 할 것이다
                //  - myData의 함수를 호출하여 좌표값을 저장한다
                p = new Point(e.X, e.Y);
                myData.AR.Add(p);  //이게 이해가 직관적으로 안 되었는데, myData.AR로 배열을 리턴받아 그 배열, ar에 포인터p값을 저장하는 걸로 생각하면 되는 거였다

                // 4-6. 브러쉬 조정
                // - 브러쉬 객체를 만들자
                // - 그려낼 graphics 필드를 만들어주자
                SolidBrush b = new SolidBrush(iCurrentColor);
                Graphics   g = this.CreateGraphics();

                // - 만약, 현재 모양이 0(사각형)/1(원향) 이라면 (브러쉬, x좌표, y좌표, 높이, 너비)를 설정해줘야한다
                // - 테두리가 있기때문에, 색상이 꽉찬 도형과 테투리만 가진 도형 두 개를 그려낸다.
                if (iCurrentShape == 0)
                {
                    g.FillRectangle(b, e.X, e.Y, 10 * iCurrentWidth, 10 * iCurrentWidth);
                    g.DrawRectangle(new Pen(Color.Black), e.X, e.Y, 10 * iCurrentWidth, 10 * iCurrentWidth);
                }
                if (iCurrentShape == 1)
                {
                    g.FillEllipse(b, e.X, e.Y, 10 * iCurrentWidth, 10 * iCurrentWidth);
                    g.DrawEllipse(new Pen(Color.Black), e.X, e.Y, 10 * iCurrentWidth, 10 * iCurrentWidth);
                }
            }
        }