C++如何做CAD软件

cokeliu 2011-03-26 08:47:04
要做一个简单的CAD画电路原理图软件, 就是将电阻/电容等元件摆到桌面画板上. 我是这样想的.
每个元件设计成一个类. 用户每加一个元件放到桌面上就是malloc一个类. 但如果元件太多比如有10000个的话.
那么需要malloc一万个类实体出来, 是否会需要庞大的内存. 比如每个元件类是继承CWnd类可以响应鼠标消息的话.
是否也会大大增加软件的资源开支? 有没有简单的方法实现?
...全文
464 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
cokeliu 2011-03-28
  • 打赏
  • 举报
回复
好的.谢谢. 我先去试验下效果和速度怎么样.
Meteor_Code 2011-03-28
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 cokeliu 的回复:]
Meteor_Code: 我的意思是每个元件都要侦测是否鼠标光标是否点击了本元件. 我现在是用单缓冲画图.在OnDraw中直接将缓冲的bitmap直接copy到DC中显示.
[/Quote]
10000个全遍历一次也花不了什么时间,一般还不用全遍历,找到鼠标点中的处理就可以了,你的元件不可能重合吧.
cokeliu 2011-03-26
  • 打赏
  • 举报
回复
这个类用的RAM应按不会很大. 1k差不多. 如果按照楼上的计算确实内存用的不多. 用new的方法可以不断新建元件. 那如果该类需要响应鼠标消息的话, 10000个该类实体都要响应mouse等消息会不会占用CPU很多资源. 电路上有10000个元件是设计的要求.
Meteor_Code 2011-03-26
  • 打赏
  • 举报
回复
就算你一个类1024个字节,10000个也就1024 * 10000 也就是9m,不到10m,你内存还没10m大吗?
何况,你确定你的电路上有10000个元件??你确定每个元件要用1024个字节保存相关数据????
cokeliu 2011-03-26
  • 打赏
  • 举报
回复
是同一个元件, 可能在一个面板上要摆放10000个元件.
黑泡泡选手 2011-03-26
  • 打赏
  • 举报
回复
10000个元件?AutoCAD有10000个元件吗?我之前做过的软件也就几十种元件!你可以根据具体项目建立不同的工程,每个工程包含属于自己的元件!
  • 打赏
  • 举报
回复
研究生课题? 这个东西应该比较难 这样做不是办法
cokeliu 2011-03-26
  • 打赏
  • 举报
回复
楼上所说的都不知道, 请问哪里有这方面的知识或例子参考学习! 谢谢
无水先生 2011-03-26
  • 打赏
  • 举报
回复
要做一个简单的CAD画电路原理图软件, 就是将电阻/电容等元件摆到桌面画板上. 我是这样想的.
每个元件设计成一个类. 用户每加一个元件放到桌面上就是malloc一个类. 但如果元件太多比如有10000个的话.
那么需要malloc一万个类实体出来, 是否会需要庞大的内存. 比如每个元件类是继承CWnd类可以响应鼠标消息的话.
是否也会大大增加软件的资源开支? 有没有简单的方法实现?
===============================================
好问题,
知道代理类概念吗?
知道自己造一个句柄类还有调用记数的概念吗?
没有?学学吧!
richblueh 2011-03-26
  • 打赏
  • 举报
回复
如果比较多的原件,是否考虑 flyweight 模式
zyrr159487 2011-03-26
  • 打赏
  • 举报
回复
应该是每种元件设计成一个类吧,可以在类里加一个数组,用来存放元件
向立天 2011-03-26
  • 打赏
  • 举报
回复
类似的东西用做过
用的是VG
cokeliu 2011-03-26
  • 打赏
  • 举报
回复
Meteor_Code: 我的意思是每个元件都要侦测是否鼠标光标是否点击了本元件. 我现在是用单缓冲画图.在OnDraw中直接将缓冲的bitmap直接copy到DC中显示.
Meteor_Code 2011-03-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cokeliu 的回复:]

这个类用的RAM应按不会很大. 1k差不多. 如果按照楼上的计算确实内存用的不多. 用new的方法可以不断新建元件. 那如果该类需要响应鼠标消息的话, 10000个该类实体都要响应mouse等消息会不会占用CPU很多资源. 电路上有10000个元件是设计的要求.
[/Quote]
为什么10000个要全部响应鼠标啊???点哪个,哪个响应不就完了?
至于重绘问题,用个缓冲绘制,没有问题
  • 打赏
  • 举报
回复
10000个 重绘一下就很长时间的。
看看设计模式的 代理模式?(即不清楚了)。
每个元件类是继承CWnd类 ? 一般没有这么做的。
你头也太差劲了, 让你一穷二白的作这个

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧