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

原创 2016年11月18日 08:19:58

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.声明

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

十分好看的Modern UI for WPF的移植(一)获取源码&运行demo

Modern UI for WPF一个国外的开源界面,界面简洁、清新,嵌入自己的项目十分简单,可很好的嵌入多个不同页面,将多个软件集合成一个,用起来非常棒,非常的喜欢,下面讲解移植过程。该教程我也没想...
  • shaynerain
  • shaynerain
  • 2017年06月17日 15:51
  • 38895

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

WPF与C++互调用
  • hitgavin
  • hitgavin
  • 2017年02月20日 09:47
  • 784

使用C++来开发WPF

使用C++来开发WPF,主要是如何在MFC(Win32)的窗口中Host WPF的Page。下面我就做个详细的介绍. 一、创建工程, 由于MFC的Wizard会生成很多用不到的代码,所以我准备从一个...
  • v2x222
  • v2x222
  • 2011年09月08日 14:05
  • 9345

WPF界面调用C++内核

用WPF写界面,来调用C++内核,一直觉得很高深,到底是怎么实现的呢。。。 首先WPF界面上应该有相应的按钮(Button),而Button的对应事件处理函数中可以调用C++内核——其实就是C++程序...
  • wrm_nancy
  • wrm_nancy
  • 2014年03月02日 19:55
  • 6692

C++/CLI 创建WPF程序

本文简单演示下用C++/CLI创建WPF程序,IDE为VS2015 首先创建CLR项目,选择CLR空项目: 然后,右键源文件,选择新建class,选择CLR->Compon...
  • wcc27857285
  • wcc27857285
  • 2017年09月29日 16:42
  • 170

使用c++开发wpf

  • 2013年05月22日 11:09
  • 554KB
  • 下载

在 WPF 中,使用 C++ 编写的 DLL 文件

WPF运行在CLR上的,它的代码是托管代码。C++编写的DLL代码是非托管的。在WPF中调用C++编写的DLL代码需要使用: using System.Runtime.InteropServices;...
  • JarvisChu
  • JarvisChu
  • 2011年07月26日 11:08
  • 11358

C++中开发WPF

  • 2013年09月05日 09:41
  • 15.43MB
  • 下载

C# wpf 封装成dll供C++调用

本文根据http://download.csdn.net/detail/l250178301/5647347创建,并加上自己的一些实际情况· 首先,新建一个wpf项目 然后...
  • VISUAL_STUDIO1
  • VISUAL_STUDIO1
  • 2016年12月23日 20:39
  • 1805

C++编写的WPF(源码)

  • 2009年10月26日 20:40
  • 14KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WPF与托管C++ ——智能家居GUI框架实现(第1篇)
举报原因:
原因补充:

(最多只允许输入30个字)