C#winfrom開發一個簡單的工作流程圖設計器


在網上找了很多的例子,都不能直接滿足自己的需求,所以自己利用下班時間,自己研究了一個工作流程圖自定義設計的流程。
先上圖圖片


初始的畫圖連線已經實現。
左側欄直接用的Button按鈕,點擊按鈕 自動添加到右側pictureBox1容器內

                Button bt = new Button();
                bt.AutoSize = false;
                //TODO:如需動態生成每個標簽元素位置,請根據實際情況,初始化標簽的Location即可。此處默認X=150,Y 以75間隔遞增
                bt.Location = new Point(20, iPosition);
                iPosition = iPosition + 60;
                bt.Size = new Size(89, 36);
                //bt.BackColor = Color.DarkOliveGreen;
                bt.ForeColor = bt_ForeColor;
                //bt.FlatStyle = FlatStyle.Flat;
                //bt.TextAlign = ContentAlignment.MiddleCenter;
                bt.Text = btText;
                bt.Name = bt_Name;
                //TODO;可以綁定標簽元素的右鍵事件
                //label.ContextMenuStrip = contextBlock;
                pictureBox1.Controls.Add(bt);
                //拖拽移動
                MoveBlock(bt);
                bt.ContextMenuStrip = this.contextMenuStrip1;
                bt.Click += new System.EventHandler(bt_click);
                huoqu_kongjian();

 

添加的控件在容器被拖動,這個大代碼很多,就不直接舉例了。
關於控件與控件之間連線用到的事GDI+畫圖

                Point p1 = new Point(t.Item1.Left + t.Item1.Width / 2,
                         t.Item1.Top + t.Item1.Height + 5);
                Point p2 = new Point(t.Item2.Left + t.Item2.Width / 2,
                                     t.Item2.Top - 5);

                Pen p = new Pen(line_color, line_bold);
                System.Drawing.Drawing2D.AdjustableArrowCap lineCap = new System.Drawing.Drawing2D.AdjustableArrowCap(6, 6, true);
                //DrawArrow(g, p, 50, 20, 100, 20);
                p.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;//恢復實線
                                                                       //p.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;//定義線尾的樣式為箭頭
                p.CustomEndCap = lineCap;
                //p.StartCap = LineCap.Triangle;
                //p.EndCap = LineCap.ArrowAnchor;

                e.Graphics.DrawLine(p, p1, p2);

 

箭頭跟隨移動則是 在鼠標拖動的時候進行重繪實現。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM