有一个新项目,功能如题,不过我现在对建立这样一个模型是一点概念没有,比如说如何建立起一个画板,在画板上面出一个一个图形,图形可以拖动,建立联系,说实话一点概念没有,希望各位大侠点拨一下,让我能有一个基本概念,谢谢大家,分不够开帖另加,帮忙顶,谢谢

解决方案 »

  1.   

    简单点儿的,可能还好操作,但是类似于rose可就难了。
      

  2.   

    不会,学到的少,还不知道什么是rose
      

  3.   

    完全抄一份,到不如去ROSE买个版权来用。省得自己测试
    如果是简单的几个图型显示,考虑用不同的自定义控件来自己画出来
      

  4.   

    不知道大家用过jude没有,我需要的功能不需要rose那么强大,我只需要简单的操作,和jude一样,比如画几个类图,项目中也有一个要求是通过画好的图生成代码的,faint了,希望有经验的朋友帮个忙,谢谢拉!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      

  5.   

    图形控件 :UserControl
    {
    Point m_point;
    string m_sName;
    void Draw(e)
    {
    控件自己画
    }
    }
    用例控件 : 图形控件,
    四方型控件:图形控件
    连线控件 : 图形控件
    单箭头控件:连线控件
    双箭头控件:连线控件我的绘图类
    {
     图形控件[]  控件s;
    }
    做一套自己的绘图控件,每个控件在屏幕上自己绘画出自己的信息
    然后,将这些类定义为可以序列话,到时候就可以保存为XML文件
      

  6.   

    我其实比较喜欢 smartdraw,可以从以下地址下载:
      http://cqbd.gnway.net/down/应用程序/SmartDraw.Professional.Plus.v6.50.rar基本上就要在“白板”上画“符号对象”,当鼠标移动或者点击的时候能够“拾取”符号对象,可以在符号对象上直接敲键盘录入文字,可以与键盘缓冲区之间拷贝、粘贴等操作,更多功能就如普通的WinForm程序没有什么两样。
      

  7.   

    可以用鼠标的事件(e.x,e.y)传入画图的位置
      

  8.   

    建议这些东西用VC,BCB,deplih写,其它都不胜任。
      

  9.   

    “建议这些东西用VC,BCB,deplih写,其它都不胜任。”,双手赞成。我正在做,VC,待差不多的时候,开源。
      

  10.   

    为了做打印组件的报表设计器,我是这样实现的www.AnyRepor.Net,下载下来可参考一下
      

  11.   

    没关系。用。NET来写。我有一个朋友就是用。NET做建模工具的。所有的控件都是自已写。不会用什么WINFROM WEB FROM 。多多学习就可以了。
      

  12.   

    TO:flygoldfish(长江支流)
    www.AnyRepor.net 打不开呀。
      

  13.   

    我把我做的思路说一下:统一一个接口,如IGoldPrinterElement,至少有一个Draw(Graphacis g)方法。虽然楼主现在只要画线和文本框,如果统一一个接口,这样,无论以后扩展多少个图形元素,只需要实现这个接口即可,再加一个实现此接口的确基类GoldPrinterElement和集合GoldPrinterElementCollection。你做一个控件如GoldPrinterGraphicsControl,,申明一个GoldPrinterElementCollection并实例化,这样,在你的控件上(菜单或有图形样式的图片按钮都可)执行一命令,则增加一个继承于GoldPrinterElement的实例如点、线、矩形、圆、椭圆、标签、文本框、表格等,并把它加到GoldPrinterElementCollection中,在控件GoldPrinterGraphicsControl的OnPaint中循环每一个GoldPrinterElementCollection集合中的GoldPrinterElement并调用它的Draw(e.Graphacis)即可。
    还有,楼主如果觉得速度慢,请启用图形的二级缓存。实际原理就是把图形画到内存中的Image,然后再把这个Image画到绘图表面上设计器原理:在控件GoldPrinterGraphicsControl的OnPaint中循环每一个GoldPrinterElementCollection集合中的GoldPrinterElement并调用它的Draw(e.Graphacis)
    为了交互便于拖动设计
    在控件上有鼠标移动事件,这样有热点的图形可以加边框,如果鼠标是按下并移动的,图形就可移动拖拽,所有这些,实际上就是OnPaint中循环每一个GoldPrinterElementCollection集合中的GoldPrinterElement,如果是当前图形,只需重绘这个图形区,并调用它的Draw(e.Graphacis)速度就快了。原理就是这样,我相信楼主会搞出来。
    效果可以看一看 www.AnyReport.Net
      

  14.   

    http://community.csdn.net/Expert/topic/4789/4789524.xml?temp=.2811853
      

  15.   

    如果光画图不用像rose那样自动处理一些关系和代码映射的话应该还好说吧?
      

  16.   

    用 vml ,你的问题应该很容易解决
      

  17.   

    功能方面可以用一下 smartdraw,看看细节。细节才是真正的功夫。我比较喜欢的它的功能举例如下:1. 符号上录入文字资料时自动调整size。
    2. 符号边框自动产生链接点。并且在鼠标靠近(注意是靠近而不是接触)的时候可以拾取链接。
    3. 连接的分段折线可以自由拖动/改变轨迹。
    4. 符号被拖动的时候,那些连线必须跟着调整,我觉得这真的算是很智慧。
    5. 可以嵌入Office。例如可以在Word里边使用“嵌入OLE对象”的方式潜入图形。在没有SD的机器则会表现为图片。
    6. 分页、打印预览,导出其它格式等数据功能。
      

  18.   

    通过GDI+来绘制就可以了
    首先建立图形类,比如矩形类,圆类,线条类等
    在通过绘图源类调用即可
      

  19.   

    建议你看一下“设计模式”之组合模式,当然有界面,你还要用到MVC模式。
    内部信息整理出模型,结构可以用组合模式如(定义画图接口,再定义画板和图形,当然画板可以用不用透明方式)当前前两部分完成后,采用MVC的模式来完成各部分之间的协调,根据复杂程度可能会用到适配器模式。
      

  20.   

    看下MSDN精选2005第五期
    上面有个类似的例子的
      

  21.   

    能不能分包出来,我来写,源代我可以提供给你。http://blog.sina.com.cn/u/4a48402d010004w0这是我写的一个图形化定义工作流引擎.
    只是想赚点钱,大家别骂我,没有办法。
      

  22.   

    见过别人做的类似于visio的东西。你要先自己做个画板,能响应鼠标事件。把线段,圆等做成控件。拿线段来说只要知道你鼠标拖拽的起始点,就可以绘出线段。线段控件里可以写个函数表示它的位置,鼠标点中线段所在区域并移动时,可以根据鼠标移动的位移量来改变线段的位置。
    线段两端点处位置也要记录下来,鼠标点中一个端点,并拖动时可以根据它拖动位移来判断这个端点的新位置。把原来的刷掉,按新位置重画。
    我看他们做的也挺复杂的。所有的控件都继承一个统一的基类。具体的一些设计还不是很清楚。
      

  23.   

    这是一个C#写的公开源代码的UML Design项目。
    非常完善,强烈建议参照。    Control Description   
    UML Design Tool . It can tell how to write a Rational Rose by yourself It have powerful edit ability It's very good example to learn GDI+, UI Design Design Pattern and so on  http://www.windowsforms.net/ControlGallery/ControlDetail.aspx?Control=693&tabindex=5