很多工控组态软件里面,都有可以根据数据动态改变的图元,只要拖到屏幕上,就可以用,非常方便。例如一个温度计的图元,设定其最大最小值之后,它就会根据传入的数据自动变化读数位置。
   这些图有个最大的特点是,底图不变,只有用来指示刻度的指针或液位变化。另外,随意放大缩小都可以。
   C#里,若要实现这类图元,该怎么弄呢?
   似乎没有好的封装办法啊

解决方案 »

  1.   

    可以实现,我们现在开发的奥运场馆就是动态管理馆内建筑物、机房及机房设备等。比较直接,相对传统的MIS,优点显而易见。你可定义统一接口,每个图元实现它,能在画布上把它画出来,画布至少双击事件,至少事件参数可以读取图元,这样,用户交互时就可以通过事件读取单前的图元,于是通过它可以获取图元信息并可通过它查询数据库的数据及数据操作....图元请看 www.AnyReport.Net
      

  2.   

    当然可以,重绘图层,或强制重绘时指定它所在的区域invalidate(rectange)
      

  3.   

    谢谢长江!我明白一些了。你看是不是这样:    先建立一个图元基类,定义一些公有方法,如全部重绘,部分重绘,放大,缩小,隐藏等,设置一些公有属性(特性),如底图源(可分为资源图和自绘图),透明度,变化区域最大/最小值等。
        然后,具体的某类图继承此基类,再添加自己的特定方法/属性。如建立一个电度表类,绘制表盘底座算法自己实现,overwrite部分重绘方法,再加上峰值/谷值等自有的特性。再次感谢!