■ AddFlow 클래스에서 인쇄하는 방법을 보여준다.
▶ MainForm.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
using System; using System.Drawing; using System.Windows.Forms; using Lassalle.Flow; namespace TestProject { /// <summary> /// 메인 폼 /// </summary> public partial class MainForm : Form { //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Public #region 생성자 - MainForm() /// <summary> /// 생성자 /// </summary> public MainForm() { InitializeComponent(); CreateDiagram(this.addFlow); this.previewButton.Click += previewButton_Click; this.printButton.Click += printButton_Click; } #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Private //////////////////////////////////////////////////////////////////////////////// Event #region Preview 버튼 클릭시 처리하기 - previewButton_Click(sender, e) /// <summary> /// Preview 버튼 클릭시 처리하기 /// </summary> /// <param name="sender">이벤트 발생자</param> /// <param name="e">이벤트 인자</param> private void previewButton_Click(object sender, EventArgs e) { AddFlowPrintHelper helper = new AddFlowPrintHelper(); helper.Preview(this.addFlow); } #endregion #region Print 버튼 클릭시 처리하기 - printButton_Click(sender, e) /// <summary> /// Print 버튼 클릭시 처리하기 /// </summary> /// <param name="sender">이벤트 발생자</param> /// <param name="e">이벤트 인자</param> private void printButton_Click(object sender, EventArgs e) { AddFlowPrintHelper helper = new AddFlowPrintHelper(); helper.Print(this.addFlow); } #endregion //////////////////////////////////////////////////////////////////////////////// Function #region 다이어그램 생성하기 - CreateDiagram(addFlow) /// <summary> /// 다이어그램 생성하기 /// </summary> /// <param name="addFlow">AddFlow</param> private void CreateDiagram(AddFlow addFlow) { Node defaultNode = new Node(0, 0, 0, 0, null, addFlow); Link defaultLink = new Link(null, null, null, addFlow); Caption defaultCaption = new Caption(0, 0, 0, 0, null, null, addFlow); // 노드들을 위한 디폴트 속성 값들을 설정한다. defaultNode.FillColor = Color.LightYellow; defaultNode.ShadowStyle = ShadowStyle.RightBottom; // 링크들을 위한 디폴트 속성 값들을 설정한다. defaultLink.DrawColor = Color.Blue; defaultLink.BackMode = BackMode.Opaque; // 캡션들을 위한 디폴트 속성 값들을 설정한다. defaultCaption.TextColor = Color.Blue; defaultCaption.DrawColor = Color.Transparent; defaultCaption.Font = new Font("Calibri", 14); // 그림자를 갖는 3개의 노랑색 노드들을 생성한다. // 두번째 노드는 사각형이고 // 세번째 노드는 Document 도형 스타일을 갖는다. Node node1 = new Node(50 , 70 , 80 , 80, "첫번째 노드", defaultNode); Node node2 = new Node(280, 180, 100, 80, "두번째 노드", defaultNode); Node node3 = new Node(50 , 230, 80 , 80, "세번째 노드", defaultNode); node2.ShapeFamily = ShapeFamily.Rectangle; node3.ShapeFamily = ShapeFamily.Rectangle; node3.GraphicsPath = PredefinedGeometry.GetNodePath(NodeShapeStyle.Document, ShapeOrientation.Degree0); // 3개의 링크들을 생성한다. // 각 링크는 파랑색이고 BackMode 속성은 Opaque로 설정한다. // 두번째 링크는 베지어 스타일을 갖고, 텍스트 색상은 빨강색이고, 목적지 화살표 각도는 30도 이다. // 세번째 링크는 HVH 스타일이다. Link link1 = new Link(node1, node2, "링크 1", defaultLink); Link link2 = new Link(node2, node2, "링크 2", defaultLink); Link link3 = new Link(node2, node3, "링크 3", defaultLink); link2.LineStyle = LineStyle.Bezier; link2.TextColor = Color.Red; link2.ArrowDst = PredefinedGeometry.GetLinkArrowStylePath(LinkArrowStyle.Arrow, 10, 14); link3.LineStyle = LineStyle.Orthogonal; // 1개의 캡션을 생성한다. Caption caption = new Caption(200, 30, 220, 30, "인쇄하기", null, defaultCaption); // 다이어그램에 노드들과 링크들 및 캡션을 추가한다. addFlow.AddNode(node1); addFlow.AddNode(node2); addFlow.AddNode(node3); addFlow.AddLink(link1); addFlow.AddLink(link2); addFlow.AddLink(link3); addFlow.AddCaption(caption); // 첫번째 링크에 2개의 포인트들을 추가한다. link1.AddPoint(new PointF(90 , 200)); link1.AddPoint(new PointF(220, 60 )); // 재귀적 링크를 늘린다. link2.SetPoint(new PointF(280, 70), 1); link2.SetPoint(new PointF(420, 70), 2); } #endregion } } |