Showing
8 changed files
with
140 additions
and
66 deletions
| ... | @@ -8,12 +8,25 @@ using System.Windows.Forms; | ... | @@ -8,12 +8,25 @@ 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 | + |
| 24 | + public CustomPanel() // 생성자 | ||
| 25 | + { | ||
| 26 | + _parentControl = this; | ||
| 27 | + } | ||
| 28 | + | ||
| 29 | + private State _selectState = State.NONE; // 열거형을 사용하기 위한 변수 | ||
| 17 | 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>(); // 링크 선을 저장한 리스트 자료구조 |
| ... | @@ -21,10 +34,8 @@ namespace flowchart | ... | @@ -21,10 +34,8 @@ namespace flowchart |
| 21 | private FigBase _linkStartShape = null; // 처음 선택한 도형을 저장하는 변수 | 34 | private FigBase _linkStartShape = null; // 처음 선택한 도형을 저장하는 변수 |
| 22 | private FigBase _movingShape = null; // 도형을 움직이겠다고 선택된 경우 해당 도형을 저장하는 변수 | 35 | private FigBase _movingShape = null; // 도형을 움직이겠다고 선택된 경우 해당 도형을 저장하는 변수 |
| 23 | 36 | ||
| 24 | - | 37 | + // 외부 클래스에서 호출되는 변수(열거형 값) 정의 |
| 25 | - // private 변수를 클래스 밖에서 읽고 쓰게 하는 함수 | 38 | + public State SelectState { get { return _selectState; } set { _selectState = value; } } |
| 26 | - public string FigName { get { return _figName; } set { _figName = 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 | - { | ||
| 82 | - if (_figName == "RECTANGLE") | ||
| 83 | { | 91 | { |
| 84 | // 사각형에 대한 정보를 자료구조에 삽입한다. | 92 | // 사각형에 대한 정보를 자료구조에 삽입한다. |
| 85 | FigRectangle rectangle = new FigRectangle(e.Location, new System.Drawing.Size(100, 100)); | 93 | FigRectangle rectangle = new FigRectangle(e.Location, new System.Drawing.Size(100, 100)); |
| 86 | _shapes.Add(rectangle); | 94 | _shapes.Add(rectangle); |
| 87 | } | 95 | } |
| 88 | - else if (_figName == "RHOMBUS") | 96 | + else if (_selectState == State.RHOMBUS) // 마름모 그리기 선택 |
| 89 | { | 97 | { |
| 90 | FigRhombus rhombus = new FigRhombus(e.Location, new System.Drawing.Size(100, 100)); | 98 | FigRhombus rhombus = new FigRhombus(e.Location, new System.Drawing.Size(100, 100)); |
| 91 | _shapes.Add(rhombus); | 99 | _shapes.Add(rhombus); |
| 92 | } | 100 | } |
| 93 | - else if (_figName == "PARALLELOGRAM") | 101 | + else if (_selectState == State.PARALLELOGRAM) // 평행사변형 그리기 선택 |
| 94 | { | 102 | { |
| 95 | FigParallelogram parallelogram = new FigParallelogram(e.Location, new System.Drawing.Size(100, 100)); | 103 | FigParallelogram parallelogram = new FigParallelogram(e.Location, new System.Drawing.Size(100, 100)); |
| 96 | _shapes.Add(parallelogram); | 104 | _shapes.Add(parallelogram); |
| 97 | } | 105 | } |
| 98 | - } | 106 | + else if (_selectState == State.MOVE) // 도형을 움직이는 상태로 선택한 경우 |
| 99 | - // 움직이는 상태이고 링크 라인을 그리지 않는 경우 (단순 도형 이동) | ||
| 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,11 +131,23 @@ namespace flowchart | ... | @@ -126,11 +131,23 @@ 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 | } |
| 133 | 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 | + } | ||
| 150 | + | ||
| 134 | // 실제 그리는 OnPaint를 통해 내가 작성한 Draw함수를 호출한다. | 151 | // 실제 그리는 OnPaint를 통해 내가 작성한 Draw함수를 호출한다. |
| 135 | protected override void OnPaint(PaintEventArgs e) | 152 | protected override void OnPaint(PaintEventArgs e) |
| 136 | { | 153 | { |
| ... | @@ -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); | ||
| 69 | } | 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 | + } | ||
| 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
-
Please register or login to post a comment