WPF与托管C++ ——智能家居GUI框架实现(第1篇)

1.问题来源

以前自己做的项目一般是面向工业现场的,所以对产品本身外观并无特别的要求。不过近期做一个智能家居的项目,这个面对的是消费群体,自然对GUI等的美观有很明确的要求。我们购置的硬件提供的一般是VC++的API。这样问题就出现了,用C++如何把界面做漂亮呢?

2.探索过程

在界面的开发方面着实经理了很艰难的一个过程。最初我拒绝用MFC,因为我知道自己的水平很难用MFC做出漂亮的界面。于是我开始在网上搜索界面开发的工具。最初我选定的是wxWidgets这个工具。本来觉得还可以的,但是开发界面感觉自己还是有瓶颈,因为各种原因又转回MFC。最初的效果是这样的。

Boss说这界面太丑了,得改改(好像是有点丑)。这时在网上搜索到了一些皮肤库美化MFC,用起来也很简单(真的很方便,只需要两行C++代码),皮肤我用的是appface。做出的效果如下图

好像是好看了一些,但是我觉得依然有问题。第一是兼容性做的不太好,最大化之后有些遮盖。再有就是不可再设计。(毕竟还是MFC,我用着很困难)
然后就是第三波了。其实最开始就注意到有WPF,因为后台语言是C#以为无法兼容的。有一天google的时候发现有托管C++可以把WPF和C++结合起来编程。当时我真的很高兴,因为我见过WPF做的界面,很漂亮(不过后来我才知道我给自己挖了多大的坑。一是我没学过C#,二是我基本没写过dll工程)。不过经过三周的奋战,终于还是把框架搭起来了,图像可以从摄像头采集回来了。
最终的界面效果如下图
 
这是启动界面

这是登陆界面

这是主页

这是安防系统界面

窗口的布局和配色是从http://www.ui.cn/detail/20025.html网站的图片上抄过来的。不过得到的只是图片,我把它们变成了GUI。我很佩服UI设计师,他们是艺术家,我只是个码农而已。另外目前界面仅仅实现了视频显示功能,其他的按钮还没有相应的后台代码,只有一些界面上的效果。另外这个项目还有很多待解决的问题,比如内存泄漏,CPU占用高。接下来我会陆续介绍整个框架搭建的全过程。包括界面设计,托管类,事件处理,数据库操作等。如果有可能的话会将整个项目上传到github供参考。

3.声明

本文引用的资源均已注明出处,如还有哪里侵犯了广大网友的知识产权,烦请告知,我会及时删帖。本项目仅用于参考学习,并未用于商业用途。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF是Windows Presentation Foundation的简称,是用于设计和开发Windows应用程序用户界面的一种技术。OSGI框架是Java平台上用于插件化开发的一个开源标准框架。虽然WPF和OSGI框架之间没有直接关系,但是我们可以通过一些方式来实现WPF应用程序中使用OSGI框架。 首先,为了在WPF应用程序中使用OSGI框架,我们需要在程序中集成Java平台,比如使用Java Native Interface (JNI) 或者Apache River框架。这样可以让我们在WPF应用程序中运行Java代码,并且使用OSGI的插件机制。 其次,我们需要在WPF应用程序中创建一个插件管理器,用于动态加载和卸载插件。我们可以使用OSGI的Bundle API来实现这个插件管理器的功能,通过管理插件的Bundle生命周期来管理插件的状态。 最后,在插件程序中,我们需要按照OSGI的规范创建Bundle,实现BundleActivator接口,以便在插件被装载和卸载时执行相关操作。同时,我们需要将插件的代码打包成OSGI的Bundle格式,以便在WPF应用程序中进行动态加载和卸载。 在实现过程中,需要注意的是,需要在WPF应用程序和插件程序之间建立良好的交互通信机制,比如使用事件或消息机制,以便在插件装载或卸载时进行适当的处理。此外,还需要考虑到插件的版本管理和协作机制,避免出现版本冲突和插件之间的不兼容性问题。 总之,使用OSGI框架可以实现WPF应用程序的插件化开发,增强应用程序的灵活性和可扩展性,同时也需要注意到一些技术细节和实现中的细节问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值