浮云E绘图提供完整的SDK开发包,支持快速定制开发各类状态图、流程图、电子图纸、平面布局图等项目源码。
使用浮云E绘图开发流程:
1. 先使用浮云E绘图编辑器.exe绘制图形,保存绘图数据文件
2. 根据业务系统需要,定义图形的业务状态,并关联上图元
3. 创建第三方C#/VC等工程,集成FYDC.dll和API接口声明(参看Demo)
4. 调用接口函数读写绘图数据,显示图形、更新图形属性,关联业务对象。
如下图网络通信状态图所示,根据实际的网络连通状态图形化实时展示各网络设备(服务器、客户机、路由器、连接线)的网络状态。
1. 绘图编辑器.exe编辑网络结构图,并保存数据文件
浮云绘图编辑器支持直线、多点线、矩形、椭圆、扇形、三角形、四角形、文字和图片基础图元。并支持基础图元之间灵活组合成复合模板图元。
2. 根据业务系统需要,定义图形的业务状态,并关联上图元
设备网络状态我们可以定义为3态:未知、连通、断开。以上图为例,如“营指挥台”通断,关联着计算机图片图元、“营指挥台”文字图元、路由器指示灯、路由器与计算机的连线。这4类图元都需要3态支持。
A. 未知态表现形式:
a.图片状态值2
b.文字为灰色0xC0C0C0
c.连线为灰色0xC0C0C0
d.指示灯圆填充灰色0xC0C0C0
B. 连通态表现形式:
a.图片状态值0
b.文字为绿色0x00FF00
c.连线为绿色0x00FF00
d.指示灯圆填充绿色0x00FF00
C. 断开态表现形式:
a.图片状态值1
b.文字为红色0x0000FF
c.连线为灰色0x0000FF
d.指示灯圆填充灰色0x0000FF
if (status == 0) color = 0x00FF00; //绿 连通
else if (status == 1) color = 0x0000FF; //红 断开
else color = 0xC0C0C0; //灰 未知
为了让相关的abcd图元步调一致,可以设定图元命名如下规则:
A(计算机image):标识为PC,名称为P01 、P02、P03......
B(文本名称text):标识为TX,名称为T01 、T02......
C(连接线路line或multpointline):标识为XL,名称为X01、X02......
D(路由器指示灯ellipse):标识为SI,名称为S01、S02......
名称后缀相同,标识一个通路的图元,需同步状态更新。代码如下所示:
String pcName = pc.Name;
String shortName = pcName.Substring(1); // P02 -> 02
String txName = "T" + shortName; // 02 -> T02
String xlName = "X" + shortName; // 02 -> X02
String siName = "S" + shortName; // 02 -> S02
3. 创建业务工程项目,集成绘图组件DLL
创建自己的业务工程项目,引入绘图组件:
A. 拷贝FYEDC.dll到exe目录下
B. 然后复制FYEDC.cs文件里的浮云绘图DLL接口函数列表到自己工程文件,即可调用。
(注意,需要设置项目平台为x86)
4. 使用API操作图元,并动态更新状态
A. 可自己封装C#绘图操作类,如下所示:
//作者:浮云绘图,专业付费定制CAD/Viso等图形编辑器、复杂曲线控件等软件
//QQ:316868127
public class FYEDCView
{
private IntPtr hShapeCanvas = IntPtr.Zero;
private Panel panel = null;
private List<ShapeElement> shapeElementList;
public void Create(Panel panel)
{
this.panel = panel;
hShapeCanvas = IFYDC.NewFYEDC();
IFYDC.CreateFYEDC(hShapeCanvas, panel.Handle,0,0, panel.Width, panel.Height);
}
public void Release()
{
if(hShapeCanvas != null)
{
shapeElementList.Clear();
IFYDC.DeleteFYEDC(hShapeCanvas);
hShapeCanvas = IntPtr.Zero;
}
}
public bool Open(String fileName)
{
IFYDC.LoadShapes(hShapeCanvas, fileName);
int virBackColor = IFYDC.GetBackColor(hShapeCanvas);
IFYDC.SetNoClientColor(hShapeCanvas, virBackColor);
return true;
}
......
......
}
B. 创建加载绘图数据
private void btnLoadNetwork_Click(object sender, EventArgs e)
{
......
if (dcView != null)
{
dcView.Release();
dcView = null;
}
dcView = new FYEDCView();
dcView.Create(this.panel1);
String stationFileName = System.Environment.CurrentDirectory + "\\3 通信网络状态图.txt";
dcView.Open(stationFileName);
dcView.Load();
dcView.SetRcvMsgWnd(this); //如果不接收绘图区的鼠标消息,则不需要此行
InitPC(); //模拟初始化业务系统对象
}
C. 根据业务对象状态,动态更新各图元展示
private void UpdatePCRelateDevStatus(int pcId, int status)
{//(image)计算机PC-P01 (text)文本名称TX-T01 (line或multpointline)连接线路XL-X01 (ellipse)路由器指示灯SI-S01
int color = 0;
if (status == 0) color = 0x00FF00; //绿 连通 (TODO:实际项目根据业务需要,定义状态值和展示效果)
else if (status == 1) color = 0x0000FF; //红 断开
else color = 0xC0C0C0; //灰 未知
PC pc = pcList.ElementAt(pcId);
String pcName = pc.Name;
String shortName = pcName.Substring(1); // P02 -> 02
String txName = "T" + shortName; // 02 -> T02
String xlName = "X" + shortName; // 02 -> X02
String siName = "S" + shortName; // 02 -> S02
foreach (ShapeElement sa in dcView.GetShapeList())
{
if(sa.Name == pcName) //image图元,改变图索引号
{
dcView.SetImgStatus(sa.Handle, status); //本次绘图时3态图定义:,0工作、1故障、2未知
}
else if(sa.Name == txName) //text图元,改变文字颜色
{
dcView.SetFontColor(sa.Handle, color);
}
else if(sa.Name == xlName) //line或multpointline,改变线条颜色
{
dcView.SetLineColor(sa.Handle, color);
}
else if(sa.Name == siName) //ellipse图元,改变填充颜色
{
dcView.SetFillColor(sa.Handle, color);
}
}
}
大家可以下载本案例工程源码,有完整的DLL接口函数再次封装、业务对象关联、定制更新状态和图形展示形态等功能模块。浮云E绘图源码中级Demo_关联业务对象_动态更新状态(可复用绘图软件源码开发)-图像处理文档类资源-CSDN下载
浮云E绘图,既支持类似viso、亿图画图(绘制静态图形),更支持快速二次开发,关联业务对象,实时更新各线、块、文字、图片的状态。如有更特殊的需要,支持驻场定制开发。
浮云E绘图完整SDK3.2下载:浮云E绘图SDK3.2海量绘图模板,简单好用。支持快速开发状态图、电路原理图、平面布局图源码-图像处理文档类资源-CSDN下载