我正在设计一个使用MVC架构变体的CAD应用程序。我的模型和视图是相互独立的。它们通过控制器进行通信。我的问题是,如果我需要绘制一个对象(比方说直线或折线),我需要许多输入点。获得积分的最好方法是什么?视图中的所有事件都由控制器订阅,控制器必须保留这些点,然后生成线或折线,最后将这条线添加到视图中。但我不知道如何有效地捕获鼠标点,因为每个对象都有不同数量的输入和不同的输入验证算法。任何帮助都将不胜感激。
发布于 2010-02-24 06:10:02
3年前我在CAD application工作,这些是我记得我们做过的一些技巧(顺便说一句:这个应用程序是免费的,您可以下载它,注册您的副本,并使用编辑器中的功能)
2-创建保存应用程序当前状态的变量(可以是枚举):就绪、绘制点、绘制线、绘制折线、绘制圆、...etc。
3-无论用户在何处单击绘图按钮,系统都会进入上述相关状态。
4-绘图结束时,系统返回“就绪模式”,当用户按Esc键或在绘图区域上单击鼠标右键(如果预期的点数未知,例如: polyline)时,系统可以通过预期点数(1表示点,2表示直线,3表示椭圆,...etc)自动检测到该模式。如果用户重新单击第一个点并绘制了3+点,也可以结束多段线绘制。
5-如果用户在完成预期点数之前结束了当前绘图操作,系统可能会取消当前绘图操作。
..。
发布于 2010-02-24 02:27:47
在设计CAD软件时,不仅要考虑灵活性和动态性,还要考虑速度。你应该使用某种包装类,作为你和硬件驱动程序之间的一个非常薄的层,它应该返回像屏幕的像素数组,当前的bpp等内容。这就是我会怎么做的(实际上也是这样做的)。现在在C#中,由于它是一种.NET语言,我不确定你是否可以在下面这样做,但是你仍然可以在控制器和你的笔对象之间有一些处理程序,不是吗?
https://stackoverflow.com/questions/2320631
复制相似问题