2010-02-23 91 views
0

我正在设计一个使用MVC体系结构变体的CAD应用程序。我的模型和视图是彼此独立的。他们通过控制器进行通信。我的问题是如果我需要绘制一个对象(比如线或折线),我需要一些输入点。什么是获得积分的最佳途径?所有来自视图的事件都由控制器订阅,控制器必须保留这些点,然后生成线或折线,最后添加此行以查看。但我不知道如何有效地完成捕捉鼠标点,因为每个对象将具有不同数量的输入和不同的输入验证算法。 任何帮助将不胜感激。设计CAD应用程序

回答

0

设计CAD软件时,不仅要考虑灵活性和动态性,还要考虑速度。你应该使用某种类型的包装类,作为你和硬件驱动之间非常薄的一层,它应该返回像屏幕像素数组,当前bpp等东西......这就是我要做的并且确实)。现在在C#中,看到它是一种.NET语言,我不确定你可以在下面去看看,但是你仍然可以在控制器和笔对象之间进行处理,不是吗?

+0

是的,这就是对的。但我正在使用第三方工具作为绘制控件。用户将会选择这个控件上的点,我需要获取点并调用控件的方法来绘制线条。当控制器正在监听来自视图控件的事件时,控制器将获得鼠标事件并且必须存储输入点。我在问如何以更好的方式完成这项工作。 Plz问我,如果我的问题不清楚。 – Ram 2010-02-23 18:47:43

1

3年前我在CAD application工作,这些是我记得我们已经完成的一些提示(顺便说一下:应用程序是免费的,您可以下载它,注册您的副本,并利用桁架编辑器)

1-您可以添加用于形状绘制的按钮,例如:线条按钮,折线按钮,矩形等等。 2-创建一个变量来保存您的应用程序的当前状态(可能是枚举):就绪,绘图点,绘图线,绘图折线,绘图圆等等。

3-无论用户点击一个绘图按钮,系统都会进入上述相关状态。

4-完成绘图时,系统返回到“就绪模式”,可通过预期的点数(点为1,线为2,椭圆为3等)自动检测或当用户按Esc或右键单击绘图区域(如果预期的点数未知,例如:折线)。如果用户重新点击了第一个点并且他已经画了3点以上,您也可以结束多段线绘制。

5-如果用户在完成预期点数之前结束操作,系统可能会取消当前的绘图操作。

...

+0

谢谢。这是一个很好的帮助 – Ram 2010-02-24 03:02:59