남윤형

텍스트박스의 글자를 도형에 삽입해서 다시 그리는 기능을 삽입

...@@ -8,23 +8,34 @@ using System.Windows.Forms; ...@@ -8,23 +8,34 @@ using System.Windows.Forms;
8 8
9 namespace flowchart 9 namespace flowchart
10 { 10 {
11 + // 각종 선택 상황을 열거형으로 정의
12 + public enum State
13 + {
14 + NONE, RECTANGLE, RHOMBUS, PARALLELOGRAM, LINKLINE, MOVE
15 + }
16 +
17 +
11 // flowchart를 그리는 판넬에 필요한 기능을 삽입. (Panel 객체를 상속해서 사용했음) 18 // flowchart를 그리는 판넬에 필요한 기능을 삽입. (Panel 객체를 상속해서 사용했음)
12 // 마우스 클릭을 놓으면 어떤 도형 또는 선을 선택했는지 판단해서, 해당 자료구조를 생성하고, 페인트 함수를 통해 그린다. 19 // 마우스 클릭을 놓으면 어떤 도형 또는 선을 선택했는지 판단해서, 해당 자료구조를 생성하고, 페인트 함수를 통해 그린다.
13 class CustomPanel : Panel 20 class CustomPanel : Panel
14 { 21 {
15 - private String _state; // NONE, DRAW, MOVE 22 + public static Control _parentControl = null; // 텍스트박스에서 부모로 정의하기 위한 변수
16 - private String _figName; // NONE, RECTANGLE, RHOMBUS, LINKLINE, ETC 23 +
17 - 24 + public CustomPanel() // 생성자
25 + {
26 + _parentControl = this;
27 + }
28 +
29 + private State _selectState = State.NONE; // 열거형을 사용하기 위한 변수
30 +
18 private List<FigBase> _shapes = new List<FigBase>(); // 도형을 저장한 리스트 자료구조 31 private List<FigBase> _shapes = new List<FigBase>(); // 도형을 저장한 리스트 자료구조
19 private List<FigLinkline> _linkLines = new List<FigLinkline>(); // 링크 선을 저장한 리스트 자료구조 32 private List<FigLinkline> _linkLines = new List<FigLinkline>(); // 링크 선을 저장한 리스트 자료구조
20 33
21 private FigBase _linkStartShape = null; // 처음 선택한 도형을 저장하는 변수 34 private FigBase _linkStartShape = null; // 처음 선택한 도형을 저장하는 변수
22 private FigBase _movingShape = null; // 도형을 움직이겠다고 선택된 경우 해당 도형을 저장하는 변수 35 private FigBase _movingShape = null; // 도형을 움직이겠다고 선택된 경우 해당 도형을 저장하는 변수
23 -
24 36
25 - // private 변수를 클래스 밖에서 읽고 쓰게 하는 함수 37 + // 외부 클래스에서 호출되는 변수(열거형 값) 정의
26 - public string FigName { get { return _figName; } set { _figName = value; } } 38 + public State SelectState { get { return _selectState; } set { _selectState = value; } }
27 - public String State { get { return _state; } set { _state = value; } }
28 39
29 // 마우스를 판넬에서 움질일때 호출되는 이벤트 함수 40 // 마우스를 판넬에서 움질일때 호출되는 이벤트 함수
30 protected override void OnMouseMove(MouseEventArgs e) 41 protected override void OnMouseMove(MouseEventArgs e)
...@@ -38,33 +49,34 @@ namespace flowchart ...@@ -38,33 +49,34 @@ namespace flowchart
38 FigBase shape = FindShapeByLocation(e.Location); 49 FigBase shape = FindShapeByLocation(e.Location);
39 50
40 if (shape != null) 51 if (shape != null)
41 - Cursor = Cursors.SizeAll; // 도형 안에 마우스가 있을 경우 52 + Cursor = Cursors.SizeAll; // 도형 안에 마우스가 있을 경우 마우스 모양 변경
42 - else 53 + else
43 - Cursor = Cursors.Default; // 도형 밖에 마우스 포인터가 있을 경우 54 + Cursor = Cursors.Default; // 도형 밖에 마우스 포인터가 있을 경우 마우스 모양 변경
44 - 55 + // 도형 안에 마우스가 있고, 링크 라인을 그리겠다고 선택
45 - if (shape != null && _figName == "LINKLINE") // 링크 라인을 그리겠다고 선택하고, 도형 안에 마우스가 있을 경우 56 + if (shape != null && _selectState == State.LINKLINE)
46 Cursor = Cursors.Cross; 57 Cursor = Cursors.Cross;
47 58
48 } 59 }
49 // 마우스를 클릭한 상태에서 링크 라인을 그리지 않겠다고 선택된 경우 60 // 마우스를 클릭한 상태에서 링크 라인을 그리지 않겠다고 선택된 경우
50 - else if (e.Button == MouseButtons.Left && _figName != "LINKLINE") 61 + else if (e.Button == MouseButtons.Left && _selectState != State.LINKLINE)
51 { 62 {
52 - FigBase shape = FindShapeByLocation(e.Location); 63 + FigBase shape = FindShapeByLocation(e.Location); // 마우스가 어떤 도형안에 있는지 검색
53 if (shape != null) 64 if (shape != null)
54 { 65 {
55 - _state = "MOVE"; // 움직이는 상태로 바꿈 66 + _selectState = State.MOVE; // 움직이는 상태로 바꿈
56 - _movingShape = shape; // 해당 도형을 레퍼런스 67 + _movingShape = shape; // 해당 도형을 레퍼런스
57 } 68 }
58 } 69 }
59 // 마우스를 클릭한 상태에서 링크 라인을 그리겠다고 선택한 경우 70 // 마우스를 클릭한 상태에서 링크 라인을 그리겠다고 선택한 경우
60 - else if (e.Button == MouseButtons.Left && _figName == "LINKLINE") 71 + else if (e.Button == MouseButtons.Left && _selectState == State.LINKLINE)
61 { 72 {
62 - if (_linkStartShape == null) // 처음 도형을 선택한것만 저장하기 위함. (다른 영역의 도형으로 넘어가도 실행안함) 73 + // 처음 도형을 선택한것만 저장하기 위함. (다른 영역의 도형으로 넘어가도 실행안함)
74 + if (_linkStartShape == null)
63 { 75 {
64 - _linkStartShape = FindShapeByLocation(e.Location); 76 + _linkStartShape = FindShapeByLocation(e.Location); // 마우스가 어떤 도형안에 있는지 검색
65 if (_linkStartShape != null) 77 if (_linkStartShape != null)
66 { 78 {
67 - _state = "MOVE"; 79 + _selectState = State.LINKLINE;
68 } 80 }
69 } 81 }
70 } 82 }
...@@ -72,40 +84,33 @@ namespace flowchart ...@@ -72,40 +84,33 @@ namespace flowchart
72 base.OnMouseMove(e); 84 base.OnMouseMove(e);
73 } 85 }
74 86
75 - // 실제 도형을 그리거나 이동하는 함수, 최종 OnPaint() 함수가 호출되어 실행됨 87 + // 실제 그릴 도형정보를 리스트 자료구조에 삽입하고, OnPaint() 함수를 호출
76 protected override void OnMouseUp(MouseEventArgs e) 88 protected override void OnMouseUp(MouseEventArgs e)
77 { 89 {
78 - //System.Diagnostics.Trace.WriteLine("debug >>>" + _state); 90 + if (_selectState == State.RECTANGLE) // 사각형 그리기 선택
79 - // 그리기 상태
80 - if (_state == "DRAW")
81 { 91 {
82 - if (_figName == "RECTANGLE") 92 + // 사각형에 대한 정보를 자료구조에 삽입한다.
83 - { 93 + FigRectangle rectangle = new FigRectangle(e.Location, new System.Drawing.Size(100, 100));
84 - // 사각형에 대한 정보를 자료구조에 삽입한다. 94 + _shapes.Add(rectangle);
85 - FigRectangle rectangle = new FigRectangle(e.Location, new System.Drawing.Size(100, 100)); 95 + }
86 - _shapes.Add(rectangle); 96 + else if (_selectState == State.RHOMBUS) // 마름모 그리기 선택
87 - } 97 + {
88 - else if (_figName == "RHOMBUS") 98 + FigRhombus rhombus = new FigRhombus(e.Location, new System.Drawing.Size(100, 100));
89 - { 99 + _shapes.Add(rhombus);
90 - FigRhombus rhombus = new FigRhombus(e.Location, new System.Drawing.Size(100, 100)); 100 + }
91 - _shapes.Add(rhombus); 101 + else if (_selectState == State.PARALLELOGRAM) // 평행사변형 그리기 선택
92 - } 102 + {
93 - else if (_figName == "PARALLELOGRAM") 103 + FigParallelogram parallelogram = new FigParallelogram(e.Location, new System.Drawing.Size(100, 100));
94 - { 104 + _shapes.Add(parallelogram);
95 - FigParallelogram parallelogram = new FigParallelogram(e.Location, new System.Drawing.Size(100, 100));
96 - _shapes.Add(parallelogram);
97 - }
98 } 105 }
99 - // 움직이는 상태이고 링크 라인을 그리지 않는 경우 (단순 도형 이동) 106 + else if (_selectState == State.MOVE) // 도형을 움직이는 상태로 선택한 경우
100 - else if (_state == "MOVE" && _figName != "LINKLINE")
101 { 107 {
102 if (_movingShape != null) 108 if (_movingShape != null)
103 { 109 {
104 - _movingShape.Location = e.Location; // 찾은 도형의 위치값을 옮길위치로 수정 110 + _movingShape.Location = e.Location; // 자료구조에서 찾은 도형의 위치값을 옮길위치로 수정
105 } 111 }
106 } 112 }
107 - // 움직이는 상태이고 링크 라인을 그리는 경우 (링크 라인을 긋는 경우) 113 + else if (_selectState == State.LINKLINE) // 선을 그리기로 선택한 경우
108 - else if (_state == "MOVE" && _figName == "LINKLINE")
109 { 114 {
110 if (_linkStartShape != null) 115 if (_linkStartShape != null)
111 { 116 {
...@@ -126,10 +131,22 @@ namespace flowchart ...@@ -126,10 +131,22 @@ namespace flowchart
126 } 131 }
127 } 132 }
128 133
129 - _state = "NONE"; 134 + _selectState = State.NONE;
130 this.Refresh(); // 다시 그리기 요청: OnPaint() 135 this.Refresh(); // 다시 그리기 요청: OnPaint()
131 base.OnMouseUp(e); 136 base.OnMouseUp(e);
132 } 137 }
138 +
139 + // 도형 안에서 마우스를 더블클릭하면 텍스트 에디터를 삽입한다.
140 + protected override void OnMouseDoubleClick(MouseEventArgs e)
141 + {
142 + FigBase shape = FindShapeByLocation(e.Location);
143 + if (shape != null)
144 + {
145 + shape.EnterEditMode(); // FigBase에 함수 있음
146 + }
147 +
148 + base.OnMouseDoubleClick(e);
149 + }
133 150
134 // 실제 그리는 OnPaint를 통해 내가 작성한 Draw함수를 호출한다. 151 // 실제 그리는 OnPaint를 통해 내가 작성한 Draw함수를 호출한다.
135 protected override void OnPaint(PaintEventArgs e) 152 protected override void OnPaint(PaintEventArgs e)
...@@ -147,7 +164,7 @@ namespace flowchart ...@@ -147,7 +164,7 @@ namespace flowchart
147 164
148 base.OnPaint(e); 165 base.OnPaint(e);
149 } 166 }
150 - // 현재 위치에 해당하는 도형을 자료구조에서 레퍼런스 함 167 + // 현재 위치에 해당하는 도형을 자료구조에서 찾아서 레퍼런스 함
151 private FigBase FindShapeByLocation(Point location) 168 private FigBase FindShapeByLocation(Point location)
152 { 169 {
153 foreach (FigBase s in _shapes) 170 foreach (FigBase s in _shapes)
......
1 using System; 1 using System;
2 using System.Collections.Generic; 2 using System.Collections.Generic;
3 using System.Drawing; 3 using System.Drawing;
4 +using System.Drawing.Drawing2D;
4 using System.Linq; 5 using System.Linq;
5 using System.Text; 6 using System.Text;
6 using System.Threading.Tasks; 7 using System.Threading.Tasks;
8 +using System.Windows.Forms;
7 9
8 namespace flowchart 10 namespace flowchart
9 { 11 {
10 // flowchart 도형을 그리는 클래스의 공통(부모 클래스) 12 // flowchart 도형을 그리는 클래스의 공통(부모 클래스)
11 - // 변수: 위치(_location), 크기(_size). 링크선 위치(_linkPoints)
12 - // 함수: 그리기(Draw), 영역내에 있는지 확인(PointInRegion)
13 class FigBase 13 class FigBase
14 { 14 {
15 private Point _location; // 위치 변수 15 private Point _location; // 위치 변수
16 private Size _size; // 크기 변수 16 private Size _size; // 크기 변수
17 private Point[] _linkPoints = new Point[] { Point.Empty, Point.Empty, Point.Empty, Point.Empty }; // Top, Left, Bottom, Right 17 private Point[] _linkPoints = new Point[] { Point.Empty, Point.Empty, Point.Empty, Point.Empty }; // Top, Left, Bottom, Right
18 18
19 + // 텍스트 박스와 관련된 변수
20 + private TextBox _textBox = null;
21 + private string _text; // 텍스트박스 글자
22 + private Rectangle _textArea; // 위치계산 용
23 + private bool _editMode = false; // 더블클릭여부 판단
24 +
19 protected FigBase(Point location, Size size) // 생성자 (위치와 크기를 저장) 25 protected FigBase(Point location, Size size) // 생성자 (위치와 크기를 저장)
20 { 26 {
21 _location = location; 27 _location = location;
22 _size = size; 28 _size = size;
23 - CalculateLinkPoint(); 29 + CalculateLinkPoint(); // 선을 연결하기 위해 도형 주위의 4개의 위치값을 재계산
30 + CalculateTextArea(); // 텍스트박스의 위치를 재계산
24 } 31 }
25 32
26 // 내부 변수를 외부에서 접근하는 함수 33 // 내부 변수를 외부에서 접근하는 함수
...@@ -30,7 +37,8 @@ namespace flowchart ...@@ -30,7 +37,8 @@ namespace flowchart
30 set 37 set
31 { 38 {
32 _location = value; 39 _location = value;
33 - CalculateLinkPoint(); // 선을 연결하기 위해 도형 주위의 4개의 위치값을 재계산 40 + CalculateLinkPoint();
41 + CalculateTextArea();
34 } 42 }
35 } 43 }
36 public Size Size 44 public Size Size
...@@ -39,7 +47,8 @@ namespace flowchart ...@@ -39,7 +47,8 @@ namespace flowchart
39 set 47 set
40 { 48 {
41 _size = value; 49 _size = value;
42 - CalculateLinkPoint(); // 선을 연결하기 위해 도형 주위의 4개의 위치값을 재계산 50 + CalculateLinkPoint();
51 + CalculateTextArea();
43 } 52 }
44 } 53 }
45 public Point[] LinkPoints { get => _linkPoints; set => _linkPoints = value; } 54 public Point[] LinkPoints { get => _linkPoints; set => _linkPoints = value; }
...@@ -47,7 +56,15 @@ namespace flowchart ...@@ -47,7 +56,15 @@ namespace flowchart
47 // 자식 클래스에 필요한 공통 함수 56 // 자식 클래스에 필요한 공통 함수
48 public virtual void Draw(Graphics g) 57 public virtual void Draw(Graphics g)
49 { 58 {
50 - 59 + // 에디트 모드 경우만 글자를 삽입한다.
60 + if (!_editMode)
61 + {
62 + using (Font font = new Font("맑은 고딕", 16, FontStyle.Regular, GraphicsUnit.Pixel))
63 + {
64 + PointF pointF1 = new PointF(_textArea.X, _textArea.Y);
65 + g.DrawString(_text, font, Brushes.Black, pointF1);
66 + }
67 + }
51 68
52 } 69 }
53 70
...@@ -66,5 +83,49 @@ namespace flowchart ...@@ -66,5 +83,49 @@ namespace flowchart
66 _linkPoints[2] = new Point(_location.X + (int)(((float)_size.Width) / 2), _location.Y + _size.Height); // Bottom 83 _linkPoints[2] = new Point(_location.X + (int)(((float)_size.Width) / 2), _location.Y + _size.Height); // Bottom
67 _linkPoints[3] = new Point(_location.X + _size.Width, _location.Y + (int)(((float)_size.Height) / 2)); // Right 84 _linkPoints[3] = new Point(_location.X + _size.Width, _location.Y + (int)(((float)_size.Height) / 2)); // Right
68 } 85 }
86 + // 텍스트 박스의 위치를 계산한다.
87 + private void CalculateTextArea()
88 + {
89 + _textArea = new Rectangle(_location, _size);
90 + _textArea.Inflate(-20, -20);
91 + }
92 +
93 + // 도형에서 마우스를 더블클릭하면 호출된다.
94 + public virtual void EnterEditMode()
95 + {
96 + if (!_editMode)
97 + {
98 + _editMode = true;
99 + if (_textBox == null)
100 + {
101 + _textBox = new TextBox();
102 + _textBox.Font = new Font("맑은 고딕", 16, FontStyle.Regular, GraphicsUnit.Pixel);
103 + _textBox.Parent = CustomPanel._parentControl; // 판넬을 부모로 지정
104 + _textBox.KeyDown += TextBox_KeyDown; // 키다운 이벤트를 호출한다.
105 +
106 + }
107 + else
108 + {
109 + _textBox.Show();
110 + }
111 +
112 + _textBox.Location = _textArea.Location;
113 + _textBox.Size = _textArea.Size;
114 +
115 + }
116 + }
117 + // 에디트 모드를 종료한댜.
118 + private void TextBox_KeyDown(object sender, KeyEventArgs e)
119 + {
120 + if (e.KeyCode == Keys.Enter)
121 + {
122 + TextBox textBox = (TextBox)sender;
123 + _text = textBox.Text;
124 + textBox.Hide();
125 + textBox.Clear();
126 + _editMode = false;
127 + }
128 + }
69 } 129 }
130 +
70 } 131 }
......
...@@ -10,6 +10,8 @@ namespace flowchart ...@@ -10,6 +10,8 @@ namespace flowchart
10 { 10 {
11 class FigLinkline 11 class FigLinkline
12 { 12 {
13 + // 도형과 도형사이에 선을 연결하는 클래스
14 +
13 private FigBase _startShape; // 링크 라인의 시작 위치 15 private FigBase _startShape; // 링크 라인의 시작 위치
14 private FigBase _endShape; // 링크 라인의 종료 위치 16 private FigBase _endShape; // 링크 라인의 종료 위치
15 17
......
...@@ -9,6 +9,9 @@ namespace flowchart ...@@ -9,6 +9,9 @@ namespace flowchart
9 { 9 {
10 class FigParallelogram : FigBase 10 class FigParallelogram : FigBase
11 { 11 {
12 + // 프로세스 평행사변형을 그리는 클래스(FigureBase를 상속)
13 + // Draw 함수에서 평행사변형을 그린다.
14 +
12 // 생성자도 상속해서 사용. 15 // 생성자도 상속해서 사용.
13 public FigParallelogram(Point location, Size size) : base(location, size) 16 public FigParallelogram(Point location, Size size) : base(location, size)
14 { 17 {
......
...@@ -9,6 +9,9 @@ namespace flowchart ...@@ -9,6 +9,9 @@ namespace flowchart
9 { 9 {
10 class FigRhombus : FigBase 10 class FigRhombus : FigBase
11 { 11 {
12 + // 프로세스 마름모를 그리는 클래스(FigureBase를 상속)
13 + // Draw 함수에서 마름모를 그린다.
14 +
12 // 생성자도 상속해서 사용. 15 // 생성자도 상속해서 사용.
13 public FigRhombus(Point location, Size size) : base(location, size) 16 public FigRhombus(Point location, Size size) : base(location, size)
14 { 17 {
......
...@@ -45,7 +45,7 @@ namespace flowchart ...@@ -45,7 +45,7 @@ namespace flowchart
45 this.btn_default.TabIndex = 0; 45 this.btn_default.TabIndex = 0;
46 this.btn_default.Text = "default"; 46 this.btn_default.Text = "default";
47 this.btn_default.UseVisualStyleBackColor = true; 47 this.btn_default.UseVisualStyleBackColor = true;
48 - this.btn_default.Click += new System.EventHandler(this.btn_default_Click_1); 48 + this.btn_default.Click += new System.EventHandler(this.btn_default_Click);
49 // 49 //
50 // btn_rectangle 50 // btn_rectangle
51 // 51 //
...@@ -55,7 +55,7 @@ namespace flowchart ...@@ -55,7 +55,7 @@ namespace flowchart
55 this.btn_rectangle.TabIndex = 1; 55 this.btn_rectangle.TabIndex = 1;
56 this.btn_rectangle.Text = "process"; 56 this.btn_rectangle.Text = "process";
57 this.btn_rectangle.UseVisualStyleBackColor = true; 57 this.btn_rectangle.UseVisualStyleBackColor = true;
58 - this.btn_rectangle.Click += new System.EventHandler(this.btn_rectangle_Click_1); 58 + this.btn_rectangle.Click += new System.EventHandler(this.btn_rectangle_Click);
59 // 59 //
60 // btn_rhombus 60 // btn_rhombus
61 // 61 //
...@@ -65,7 +65,7 @@ namespace flowchart ...@@ -65,7 +65,7 @@ namespace flowchart
65 this.btn_rhombus.TabIndex = 2; 65 this.btn_rhombus.TabIndex = 2;
66 this.btn_rhombus.Text = "if"; 66 this.btn_rhombus.Text = "if";
67 this.btn_rhombus.UseVisualStyleBackColor = true; 67 this.btn_rhombus.UseVisualStyleBackColor = true;
68 - this.btn_rhombus.Click += new System.EventHandler(this.btn_rhombus_Click_1); 68 + this.btn_rhombus.Click += new System.EventHandler(this.btn_rhombus_Click);
69 // 69 //
70 // btn_linkline 70 // btn_linkline
71 // 71 //
...@@ -80,11 +80,9 @@ namespace flowchart ...@@ -80,11 +80,9 @@ namespace flowchart
80 // CustomPanel 80 // CustomPanel
81 // 81 //
82 this.CustomPanel.BackColor = System.Drawing.SystemColors.ActiveBorder; 82 this.CustomPanel.BackColor = System.Drawing.SystemColors.ActiveBorder;
83 - this.CustomPanel.FigName = null;
84 this.CustomPanel.Location = new System.Drawing.Point(174, 10); 83 this.CustomPanel.Location = new System.Drawing.Point(174, 10);
85 this.CustomPanel.Name = "CustomPanel"; 84 this.CustomPanel.Name = "CustomPanel";
86 this.CustomPanel.Size = new System.Drawing.Size(707, 533); 85 this.CustomPanel.Size = new System.Drawing.Size(707, 533);
87 - this.CustomPanel.State = null;
88 this.CustomPanel.TabIndex = 0; 86 this.CustomPanel.TabIndex = 0;
89 // 87 //
90 // btn_parallelogram 88 // btn_parallelogram
......
...@@ -17,42 +17,32 @@ namespace flowchart ...@@ -17,42 +17,32 @@ namespace flowchart
17 InitializeComponent(); 17 InitializeComponent();
18 } 18 }
19 19
20 - private void btn_default_Click_1(object sender, EventArgs e) 20 + private void btn_default_Click(object sender, EventArgs e)
21 { 21 {
22 // 초기상태 22 // 초기상태
23 - CustomPanel.State = "NONE"; 23 + CustomPanel.SelectState = State.NONE; // 선택 없음
24 - CustomPanel.FigName = "NONE"; 24 + CustomPanel.Cursor = Cursors.Default; // 마우스 모양은 기본
25 - CustomPanel.Cursor = Cursors.Default;
26 } 25 }
27 26
28 - private void btn_rectangle_Click_1(object sender, EventArgs e) 27 + private void btn_rectangle_Click(object sender, EventArgs e)
29 { 28 {
30 - CustomPanel.State = "DRAW"; // 도형을 그리겠다고 선택 29 + CustomPanel.SelectState = State.RECTANGLE; // 사각형을 선택
31 - CustomPanel.FigName = "RECTANGLE"; // 사각형을 선택 30 + CustomPanel.Cursor = Cursors.Hand; // 마우스 모양은 손모양
32 - CustomPanel.Cursor = Cursors.Hand;
33 } 31 }
34 - 32 + private void btn_rhombus_Click(object sender, EventArgs e)
35 -
36 -
37 - private void btn_rhombus_Click_1(object sender, EventArgs e)
38 { 33 {
39 - CustomPanel.State = "DRAW"; 34 + CustomPanel.SelectState = State.RHOMBUS; // 마름모를 선택
40 - CustomPanel.FigName = "RHOMBUS"; // 마름모를 선택 35 + CustomPanel.Cursor = Cursors.Hand; // 마우스 모양은 손모양
41 - CustomPanel.Cursor = Cursors.Hand;
42 } 36 }
43 37
44 private void btn_parallelogram_Click(object sender, EventArgs e) 38 private void btn_parallelogram_Click(object sender, EventArgs e)
45 { 39 {
46 - CustomPanel.State = "DRAW"; 40 + CustomPanel.SelectState = State.PARALLELOGRAM; // 평행사변형을 선택
47 - CustomPanel.FigName = "PARALLELOGRAM"; // 사각형을 선택 41 + CustomPanel.Cursor = Cursors.Hand; // 마우스 모양은 손모양
48 - CustomPanel.Cursor = Cursors.Hand;
49 } 42 }
50 -
51 private void btn_linkline_Click(object sender, EventArgs e) 43 private void btn_linkline_Click(object sender, EventArgs e)
52 { 44 {
53 - CustomPanel.State = "DRAW"; 45 + CustomPanel.SelectState = State.LINKLINE; // 링크 라인을 선택
54 - CustomPanel.FigName = "LINKLINE"; // 링크 라인을 선택
55 - // CustomPanel.Cursor = Cursors.Hand;
56 } 46 }
57 } 47 }
58 } 48 }
......
No preview for this file type