基于浮云E绘图源码定制开发网络状态图(拓扑图),关联业务对象,并动态更新

浮云E绘图提供完整的SDK开发包,支持快速定制开发各类状态图、流程图、电子图纸、平面布局图等项目源码。

使用浮云E绘图开发流程:
1. 先使用浮云E绘图编辑器.exe绘制图形,保存绘图数据文件
2. 根据业务系统需要,定义图形的业务状态,并关联上图元
3. 创建第三方C#/VC等工程,集成FYDC.dll和API接口声明(参看Demo)
4. 调用接口函数读写绘图数据,显示图形、更新图形属性,关联业务对象。

如下图网络通信状态图所示,根据实际的网络连通状态图形化实时展示各网络设备(服务器、客户机、路由器、连接线)的网络状态。

浮云E绘图中级应用之网络通信状态实时更新

1. 绘图编辑器.exe编辑网络结构图,并保存数据文件

浮云绘图编辑器支持直线、多点线、矩形、椭圆、扇形、三角形、四角形、文字和图片基础图元。并支持基础图元之间灵活组合成复合模板图元。

编辑器详情参看:浮云E绘图SDK3.0,快速开发电路图、电子图纸、工业控制流程图、工艺流程图等绘图项目_浮云绘图的博客-CSDN博客浮云E绘图是一款功能实用、操作简便,提供完整的SDK,支持状态图、电子图纸、逻辑电路图、工业控制系统、工艺流程图等绘图项目快速二次开发(如有特殊需求,可以驻场定制开发)。通过线段、矩形、圆形、三角形、扇形、多点线、文字、图片等基础图形的绘制组合,可以满足诸多绘图场景的需要。...https://blog.csdn.net/fyhhack/article/details/125107217

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......

浮云E绘图定义图形的业务状态,并关联上图元

 名称后缀相同,标识一个通路的图元,需同步状态更新。代码如下所示:

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)

浮云E绘图工程项目集成绘图组件DLL

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下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮云绘图

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值