WPF与WinForm的抉择

大疆无人机地理视频制作全流程:从SRT文件到GIS叠加(附实战避坑指南) 本文详细解析了大疆无人机地理视频制作全流程,从解析SRT文件中的位姿数据,到在GIS软件中构建地理视频工程并生成可分发的文件。文章重点介绍了地理视频的核心概念、数据处理实战技巧,并探讨了其在应急响应、工程巡检等场景的高级应用精度边界,为GIS工程师无人机爱好者提供了一份实用的避坑指南。 阅读详情
WPF与WinForm的抉择

微软曾经对WPF(代号Avalon)抱很大的期望——新一代的华丽用户界面平台,一统Web应用和桌面应用,Flash杀手,尽管微软口头上不承认。几年下来,WPF确实实现了当初的预期的大部分功能,但离称霸软件开发领域还有不小的距离。不过,刚转到WinForm上一两年的开发人员们都很困惑,WinForm究竟还有没有未来。微软只是模糊地说短期内还是WinForm,长期是WPF。想想“维纳斯”,“TabletPC”,“Hailstorm”,“IE Channels”等等就知道这位老大的话不能全信。到底何去何从就仁者见仁智者见智了。

英文开发社区内有句流行的话,叫“No silver bullet”,就是说没有万能钥匙,没有一个工具或方法能完美地解决所有的问题。同样这对WPF也适用。与其说WPF是WinForm的替代品,它更像DHTML和ASP.NET。夸张一点说,如果要给微软的技术画个家谱的话,DHTML就是WPF的直系亲属。WPF里的大量核心概念和结构,如属性引擎、事件模型等,都是继承自DHTML,最大的一个不同是外观和控件逻辑的分离。WPF应用和DHTML应用(HTA)的相似性也非常大,不同点是WPF应用可以完全脱离IE。也就是说,WPF和网页、ASP.NET、SVG是一套体系,可以比作XML版的Flash,而和WinForm完全不同。WPF的长项应该是网页式应用,当然它也可以用来做别的东西,就像Ajax可以做在线文本编辑器一样。

也许有人还没听说过DHTML。DHTML即Dynamic HTML,是微软在90年代末在IE4里支持的扩展了的HTML,主要特征就是可以动态修改网页上对象的属性,而且具有类似Flash里的时间线,可以做动态的网页。缺点是难于开发和调试。后来主要被用来做翻转按钮。DHTML的一个页面集合和脚本资源一起可以打包成HTA应用,HTA应用可以在本机以及网络上使用。但从现在还有多少人记得DHTML就知道这东西没成才。

回到WPF,WPF只在XP和Vista上有完整的支持,在其他平台和浏览器下,微软提供了WPF/E(开发代号)。WPF/E的程序是非编译的,就是说是发布源码的,和HTML加JavaScript一样。另外WPF/E目前只支持JavaScript。那么,WPF/E能用来做什么应用大家也就心里明白了。要在WPF/E和Flash间选择的话,只要想想XML和压缩的二进制文件的区别就行了,现在几兆的Flash比比皆是,改用XML格式的话会有多大,诸位心里明白。不过要是个网页Form应用的话,WPF/E确实比Flash更强一些,不过有Ajax在,杀鸡未必要用牛刀。如果你的应用只支持XP和Vista,那么你可以得到WPF的全部优势。

WPF有三种应用模式:应用、浏览应用、文档应用。应用就是一般的窗口应用,浏览应用就是象网页一样的一页一页的应用,文档应用是用来显示内容的浏览应用功能子集,而不是MVC模型。一般应用其实也就是每个页面拥有一个独立的窗口。估计VB用户想到了当年的html控件,Delphi用户想到了IntraWeb。简单的理解就是把WinForm界面换成了网页,当然这个网页的功能比HTML强得多,也复杂得多。

WPF是一套很复杂的体系,它的界面可以用代码生成,不过绝大多数人都会用XAML来生成。XAML可以认为是WPF的HTML。制定标准的人总是说XML是可读的,但多数人认为它是用来给机器读的。XMAL基于XML,同时做了相当的扩展以弥补功能的不足。要手写XAML,必须了解WPF,了解XML(namespace,link等等),了解XAML的规则,了解XAML扩展的语法,能够记住大量的标识符和引用关系。就像今天人们大多不再手写HTML一样,人们大多不会愿意去手写更复杂的XAML。而且按照微软的设计目标,WPF要将界面设计和程序逻辑分开,交给不同的专业人员去做。也就是说,界面的设计是要交给美工的。相信我,找一个能够手写XAML的美工很难。微软为此提供了Expression系列软件,当然不是免费的。当然VisualStudio里也有一定程度的支持,但这意味着由程序员来做灵活复杂的界面,更容易做出丑陋的界面;或者让美工来用VisualStudio,功能有限而且有点昂贵。当然也可能有个不错的UI程序员,两全其美;或者老老实实地做简单朴素的界面,以后有机会再找美工润色。

程序员都喜欢谈论速度。WPF是可以硬件加速的,在DirectX 9级显卡和安装了较新的驱动的情况下,WPF会得到部分或完全的硬件加速。WinForm是基于GDI+的,没有硬件加速,只有v2.0里的非兼容模式下的文本是通过GDI加速的。所以,长远来说,WPF有更好的性能。

那么现在回到最初的问题,WPF和WinForm,赌注该压哪一边。编辑器类程序是难以移植到WPF的,如World、Excel、PowerPoint、Photoshop、IDE等。显示类和一般的商务类应用都是可以移植的,现有的Web应用都是可移植的。也就是说,WPF的应用范围和Ajax、Flash是有很大重合的,WPF的竞争力就是在和代码的集成上。随着Adobe加紧升级Flash的应用功能,一种可能的结果是WPF和Flash压缩了Ajax的生存空间,WPF/E没有获得足够的支持,WPF成为Windows专用的应用,Flash作为跨平台方案存在。而对WinForm程序来讲,嵌入一些WPF内容是容易的。在WPF前途未卜的情况下,WinForm仍然是目前一般应用最稳妥的途径。
工业级UI:C# WinForm/WPF实现专业SCADA数据可视化图表实战 数值 阅读详情

相关推荐

PCL 基于法线微分(DoN)的点云分割【2026最新版】

基于法线微分的分割。博客长期新,本文最新新时间为:2026年5月10日。

点云侠的博客 39万+

WPF四年,尤不足以替代WinForm

WPF四年,尤不足以替代WinFormWPF出山已四年,作为官方内定的下一代UI系统掌门,没少露脸。但这个新掌门能否胜任,仍是众多开发者的心头之虑。通过对VisualStudio 2010的编辑器部分用WPF重写,微软终于对这个胜任否的问题给出了个证实,当然,也给WPF做了不少重要的改进,尤其是终于解决了文本看不清的问题。所以,至少从.NET 4开始,WPF应该可以比较安全的用于重要的开

Dev in Nightmare 1万+

电力机车电器:HXD3型电力机车电路图册-A4.doc

电力机车电器

WPFWinForm技术有什么区别?哪个加有前景?

1、 结果来说,属于两套界面渲染方式。一个是对传统windows界面元素的封装,通过gdi绘制。另一个是全新的dx渲染绘制的界面,也脱离了对传统windows控件的依赖,没有历史包袱,理论上可以展现炫酷的界面。对初级开发人员来说,没太大区别,类似的基本设计器是他们设计界面的主要手段,一样给事件编写代码。对初级以上开发人员来说,wpf需要学习xaml,有全新的ui描述语言,特别是可以通过模板的嵌套...

谁为拨动染血的时空苍穹 7万+

WPFWinForm开发有什么区别?

转自http://hi.baidu.com/leoliu83/blog/item/1d1a4a66dcb41134aa184cfd.html WPFWinForm开发有什么区别? 2010-11-06 21:43 WPF开发于WinForm之后,从技术发展的角度,WPFWinForm先进是不容置疑的。我觉得WPF相比于WinForm有下面的一些较好的特性: 解决Windo...

weixin_34223655的博客 1524

WPF/WinForm 关于窗体大小变化的消息机制处理

因为我去掉了WPF窗体的默认边框,所以要实现窗体随鼠标拖拉而进行缩放最大化处理时不遮挡任务栏,那么就得动态调用win32的api,去利用消息机制处理这类操作。 下面这段代码是网上找的,是处理窗体最大化时不遮挡任务栏,我这里主要对代码进行注释分析,方便小白理解(话说我也是小白) 另:[StructLayout(LayoutKind.Sequential)]这个特性,在控件开发或者定义...

HXW110138的博客 318

wpf替代winform 解决PLC数据量过大页面卡顿的问题

winform 由于不是数据驱动, 页面想刷新数据必须刷新控件, wpf则不用. 可以利用wpf 的数据绑定IOC, 页面中的消息传递, itemscontrol 实现大量数据刷新, 上位机页面不卡顿 代码如下: <Window x:Class="NavTest.Views.NewMainView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas

helldoger的博客 1973

WinFormWPF之间的痛苦抉择

本是专注ASP.NET开发,但在开发过程中或多或少的要借助WinForm编程来做一些工具,WPF下来后,看到网上介绍的 转载于:https://www.cnblogs.com/joinusba/archive/2012/08/11/2633990.html...

weixin_30274627的博客 2531

Winform vs Wpf:工控行业中的性能兼容性抉择

本文深入探讨了工控行业在界面开发时,如何在WinformWPF之间进行性能兼容性抉择。文章对比了两者在渲染机制、内存占用、遗留控件兼容性及开发体验上的核心差异,为面临硬件资源受限、历史包袱重等典型工控场景的开发团队提供了清晰的选型指南实战建议。

xx56789的博客 201

[Tonn]图南软件概览

阅读目录 开始 本产品的开发目的 在WPFWinForm之间的抉择 WPF中使用到的第三方控件 界面预览 2012年1月底,图南软件进入了开发阶段,在设计、开发的过程中,遇到了很多问题,最终,克服问题,产品问世,此文记录了开发过程中所遇到的问题,选择,以及处理的方式. 本产品的开发目的 本产品的针对人群是服装品牌...

acawws26268的博客 281

别再纠结,WinFormWPF的异同点在这!

从零学习构建一个完整的系统WinFormWPF都是微软推出的桌面应用程序开发框架,很多人不知道该如何选择,今天我们一起来盘点下两者的异同点。01设计理念不同WinForm是2001年推出的界面应用开发框架,采用的是窗体控件模型,以事件驱动的开发模式,并且提供了丰富控件库,方便开发者开发应用程序。WPF是2006年推出的界面应用开发UI框架,引入了一种全新的界面开发模型,使用XAML来定义界面,...

dotNET跨平台 3370

.net winform/wpf 等占有内存问题

开发客户端的时候 碰到多线程,然后导致内存一直增加,最后客户端崩溃。在网上看到一个方法使用后这个问题立马解决了,在这里记录一下,方便后期翻阅。代码如下: [DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize")] public static extern int SetProcessWorkingSetSize...

猴子_net的博客 1624

MFC, WPF , winform 比较

未知网友: 开发效率上,MFC 尽管MFC开发界面执行效率高但是开发效率低,作为现在的项目开发来说时间跟开发效率往往能决定项目的成败,所以除非有特别的需求,否则都回尽量避免用mfc来做开发,MFC只是一个弱封装器。 开发成本,MFC〉wpfwinform 用MFC开发成本太高,对开发者能力要求高,作为客服当然希望开发的费用越少越好,开发者当然希望钱赚得越多越好,这样一比,这也是MFC没落的一

路楷的专栏 4469

都是基于.NET平台,WPF能取代Winform吗?

Winform还是WPF? 很多winform的学者时常在我的技术群咨询要不要学习WPF?我一贯的观点是必须学啊!如果是搞工控做cs软件开发,WPF自然是首选。WPF优势在哪里?①前后端分离:WPF是数据驱动的而非Winform的事件驱动,可以通过属性bing的方式实现界面的数据新,这样就可以很好地实现前后台的分离,在大型的开发项目中,后端开发人员只用编...

zls365365的博客 1399

都是微软亲儿子,WPF凭啥干不掉WinForm?这3个场景说明白了

摘要: WinFormWPF作为.NET平台的桌面开发框架各有优劣,无法互相取代。WinForm适合快速开发、稳定性要求高的场景(如企业工具、工业软件),学习成本低且维护简单;WPF则以美观界面、数据绑定复杂交互见长,适合客户端软件高DPI需求。微软虽推出WinUI 3MAUI等新选项,但WinFormWPF仍广泛使用。开发者应根据项目需求选择工具:初学者建议从WinForm入门,再进阶WPF;老项目无需盲目重构。技术选型应注重实用性场景匹配,而非追求替代。

专注于C#/.NET/.NET Core学习、工作、面试干货和实战教程分享。这里聚焦了大量的C#/.NET/.NET Core优质文章、开源项目、实用工具和学习、工作、面试心得。 595
上一篇: WinForm缺省字体之迷
下一篇: XNA与MDX,无人知晓的路线图
Nightmare
博客等级 码龄26年 70粉丝 118原创
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值