高分求BMP背景上再贴多个小BMP图片的方法!

zhstars 2010-08-06 01:50:22
如题,我现在做一个水泵监控的系统,一张线路图(AutoCAD格式)上有大概5个水泵,必须每格一分钟显示水泵的开关状态(就像好多组态软件一样),下面是我的思路:
1.将该线路图转为BMP格式,在MFC程序里面加载为背景;
2.将水泵的开和关状态各用一张大小(置形状)相同的图表示;
3.在BMP背景的指定位置,根据水泵的状态载入不同的小BMP图。

现在请教两个问题:
一. 按照我的思路能否实现,如何实现,效率高不高?有代码或者现成的类也行。

二. 我知道我的思路是一个比较笨的方法,最好是自己有一套自己的作图(示意图即可)及显示软件;请问是否有人做过该类型的软件,给出一个思路,或者直接Email(请将Email中的#改为@)联系我也行,可以花钱购买。

zhstars#sina.com


欢迎大家指教,分不够还可以再加!
...全文
105 点赞 收藏 13
写回复
13 条回复
zhstars 2010年08月09日
其实第二个问题才是我的重点,算了,多谢各位,结贴了。
回复 点赞
ls443085074 2010年08月09日
把背景,开关状态全画到内存DC里面去,在一次画出来不就好了。
回复 点赞
zhstars 2010年08月09日
难得再人没有回答了吗?
回复 点赞
zhstars 2010年08月06日
多谢各位。

那我的第二个问题有没有人帮解决啊?
回复 点赞
tvinni 2010年08月06日
你思路完全可以实现,先把加载BMP背景,然后找到你要贴小图的坐标,利用坐标用GDI+贴图实现,记得网上好像有个CGifplayer的代码,这个程序完全可以达到你要求。我电脑里也有,不过现在不在宿舍。至于泵状态控制你定义通告消息实现比较方便。。。如果状态较多还可以用线程处理,用通告消息处理线程,这样逻辑会很清晰
回复 点赞
ColdMooon 2010年08月06日
可以在在OnEraseBkgnd里绘背景,OnPaint里绘开关。
也可以都在OnPaint里绘。
100个不慢,就是有点闪。
如果要求不闪,请用双缓冲。代码一搜一大堆。
回复 点赞
zhstars 2010年08月06日
[Quote=引用 4 楼 coldmooon 的回复:]

可以稍微的简化一下:
把关状态的泵合并到背景里。
画图时把开状态的泵画上去就行。
[/Quote]
你这是一个好方法,多谢了!
回复 点赞
zhstars 2010年08月06日
[Quote=引用 3 楼 lizhigang34 的回复:]

引用 2 楼 zhstars 的回复:
回楼上,转成BMP后不大,分辨率最多1400*1050吧,因为本身线路图就是一个简单示意图,挺小的。
如果我这个方法可行,请再指点,给出具体方法。

是我想的太简单了,还是你想的太复杂了,就是用GDI贴图而已啊?
[/Quote]
哈哈,看来有经验的就是不一样。我自己从没有做过GDI的东西,因此觉得是一个相当复杂的问题。
那就麻烦老兄指点几个具体的简单问题:
1.是不是在OnPaint函数中进行重绘,然后重绘的时候是不是背景和开关状态也要一起绘,还是只绘开关状态呢?
2.我有一张总的示意图,大概有100个左右开关,用这个方法效率如何?会不会很慢呢?
3.推荐一个GDI贴图的函数吧(不要笑我)!
回复 点赞
ColdMooon 2010年08月06日
可以稍微的简化一下:
把关状态的泵合并到背景里。
画图时把开状态的泵画上去就行。
回复 点赞
lizhigang34 2010年08月06日
[Quote=引用 2 楼 zhstars 的回复:]
回楼上,转成BMP后不大,分辨率最多1400*1050吧,因为本身线路图就是一个简单示意图,挺小的。
如果我这个方法可行,请再指点,给出具体方法。
[/Quote]
是我想的太简单了,还是你想的太复杂了,就是用GDI贴图而已啊?
回复 点赞
zhstars 2010年08月06日
回楼上,转成BMP后不大,分辨率最多1400*1050吧,因为本身线路图就是一个简单示意图,挺小的。
如果我这个方法可行,请再指点,给出具体方法。
回复 点赞
lizhigang34 2010年08月06日
我觉得你的思路没问题啊,只是不知道你那张线路图(AutoCAD格式)转成BMP后有多大?
回复 点赞
发动态
发帖子
图形处理/算法
创建于2007-09-28

7618

社区成员

5.0w+

社区内容

VC/MFC 图形处理/算法
社区公告
暂无公告