前几天公司做项目,需要设计一个工艺路线的功能模块,需求是可以通过界拖动图片,连接图片的方式进行工艺路线的编排,第一个想到的是我通过画图的方式来吧,可实际写起来太麻烦了,好在了解到有这么一个插件,进行了简单的学习,嘿嘿。。addflow 总体来说运行起来还是比较简单的,下面附上部分代码/
/// <summary>
/// 创建图
/// </summary>
/// <param name="addflow"></param>
public void CreateDiagram(AddFlow addflow)
{
//属性设置
AssemblyCopyrightAttribute aca = new AssemblyCopyrightAttribute("");
addflow.Dock = DockStyle.Fill;
addflow.BorderStyle = BorderStyle.FixedSingle;
addflow.BackColor = Color.AliceBlue;
addflow.CanStretchLink = false;
addFlow.CanDrawNode = false;
//node的设置
addflow.NodeModel.ShapeFamily = ShapeFamily.Rectangle;
addflow.NodeModel.FillColor = Color.Transparent;
addflow.NodeModel.GradientColor = Color.Transparent;
addflow.NodeModel.DrawColor = Color.Transparent;
addflow.NodeModel.TextPosition = TextPosition.CenterBottom;
addflow.NodeModel.TextColor = Color.Black;
addflow.NodeModel.ImagePosition = ImagePosition.CenterTop;
//连接线的设置
addflow.LinkModel.FillColor = Color.Black;
addflow.LinkModel.Thickness = 3;
addflow.LinkModel.IsAdjustOrg = true;
addflow.LinkModel.IsAdjustDst = true;
List<Node> list_station= DrawStation(addflow);
for (int i=0;i<list_station.Count;i++)
{
Image img = new Bitmap(“”路径“+ "\\Resources\\station.png");
list_station[i].Image= img;
addflow.AddNode(list_station[i]);
}
var nodes = addflow.Items.OfType<Node>().ToArray();
}
/// <summary>
/// 绘制各个工位
/// </summary>
/// <param name="addflow"></param>
public List<Node> DrawStation(AddFlow addflow)
{
List<Node> list = new List<Node>();
Node node = null;
DataTable dt = AsmStation_BLL.GetAllStation();
for (int i=0;i<dt.Rows.Count;i++)
{
node = new Node(10+(60*i), 580, 50, 85, dt.Rows[i]["STATION_NAME"].ToString(), addflow);
node.Text = dt.Rows[i]["STATION_NAME"].ToString();
node.FillColor = Color.White;
list.Add(node);
}
return list;
}
/// <summary>
/// 设置显示的坐标
/// </summary>
public List<PointF> SetPointF()
{
List<PointF> list = new List<PointF>();
DataTable dt = AsmStation_BLL.GetAllStation();
PointF pf;
for (int i = 0; i < dt.Rows.Count; i++)
{
if (i < 5)
{ pf = new PointF(130 * i, 80); list.Add(pf);}
if (i >= 5 && i < 10)
{ pf = new PointF(130 *( i), 180); list.Add(pf); }
else
{ pf = new PointF(130 * (i), 280); list.Add(pf); }
}
return list;
}
接下来你就可以随心所欲的发挥了,