WPF与Winform的选择

最近公司计划对ERP系统全面升级,现有的ERP是简单的bs架构系统打算改版成cs。平时如自己写一些工具,小应用都是用winform就足够。但是界面总是很难看,据了解WPF在这一方面会强一些。因为之前对WPF并不熟悉,先花了点时间了解一下,和Winform做了一下对比。以下大概的整理,未做详细整理。

wpf是啥技术?

DHTML就是WPF的直系亲属。WPF里的大量核心概念和结构,如属性引擎、事件模型等,都是继承自 DHTML,最大的一个不同是外观和控件逻辑的分离。WPF应用和DHTML应用(HTA)的相似性也非常大,不同点是WPF应用可以完全脱离IE。也就是说,WPF和网页、ASP.NET、SVG是一套体系,可以比作XML版的Flash,而和WinForm完全不同

WPF有三种应用模式:应用、浏览应用、文档应用。应用就是一般的窗口应用,浏览应用就是象网页一样的一页一页的应用,文档应用是用来显示内容的浏览应用功能子集,而不是MVC模型。

WPF是一套很复杂的体系,它的界面可以用代码生成,不过绝大多数人都会用XAML来生成。XAML可以认为是WPF的HTML。制定标准的人总是说 XML是可读的,但多数人认为它是用来给机器读的。XMAL基于XML,同时做了相当的扩展以弥补功能的不足。要手写XAML,必须了解WPF,了解 XML(namespace,link等等),了解XAML的规则,了解XAML扩展的语法,能够记住大量的标识符和引用关系。

WPF要将界面设计和程序逻辑分开,交给不同的专业人员去做。也就是说,界面的设计是要交给美工的。但就目前找一个能够手写XAML的美工很难。微软为此提供了Expression系列软件,当然不是免费的。当然 VisualStudio里也有一定程度的支持,但这意味着由程序员来做灵活复杂的界面,更容易做出丑陋的界面;或者让美工来用 VisualStudio,功能有限而且有点昂贵。当然也可能有个不错的UI程序员,两全其美;或者老老实实地做简单朴素的界面,以后有机会再找美工润色。程序员都喜欢谈论速度。WPF是可以硬件加速的,在DirectX 9级显卡和安装了较新的驱动的情况下,WPF会得到部分或完全的硬件加速。WinForm是基于GDI+的,没有硬件加速,只有v2.0里的非兼容模式下的文本是通过GDI加速的。所以,长远来说,WPF有更好的性能。

二者对比:

winform 封装了 win32 的api,多次进行P/invoke 操作 (大部分使用p/invoke操作封装),速度慢。

wpf是一种新的模型,不再使用win32 模型,自己新建模型,使用dx 作为新的显示技术,直接访问驱动程序,加快了运行速度,可是,这种模型,需要支持dx 9 的显卡,硬件要求高(你还能找到现代机器不支持dx9 的吗?)

从开发效率上winform>wpf

从开发成本wpf〉winform

界面执行效率上WPF〉winform(随着计算机硬件的性能提高,多核cpu的普及)

内存使用上wpf〉winform

开发灵活性上wpf〉winform

美观上:Wpf〉MFC

参考:http://hi.baidu.com/leoliu83/blog/item/1d1a4a66dcb41134aa184cfd.html

http://www.wendangku.net/doc/40f540e9998fcc22bcd10ddf.html

http://www.360docs.net/doc/info-c611a04f6bd97f192279e968.html

时间: 2024-08-02 13:16:30

WPF与Winform的选择的相关文章

WPF与WinForm的抉择

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

编写高质量代码改善C#程序的157个建议——建议87:区分WPF和WinForm的线程模型

建议87:区分WPF和WinForm的线程模型 WPF和WinForm窗体应用程序都有一个要求,那就是UI元素(如Button.TextBox等)必须由创建它的那个线程进行更新.WinForm在这方面的限制并不是很严格,所以像下面这样的代码,在WinForm中大部分情况下还能运行(本建议后面会详细解释为什么会出现这种现象): private void buttonStartAsync_Click(object sender, EventArgs e) { Task t = new Task(()

Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决

有人会说不建议Wpf中使用Winform控件,有人会说建议使用Winform控件在Wpf下的替代方案,然而在实际工作中由于项目的特殊需求,考虑到时间.成本等因素,往往难免会碰到在WPF中使用Winfrom控件的问题,我们知道Wpf可以通过使用WindowsFormsHost容器调用Winform控件,但是在一些场合需要将Wpf元素显示在Winform控件的上层,此时就会出现Wpf元素被Winform控件遮盖的问题. 一.场景再现 接到公司命令,在时间紧迫的情况下,需要将原来的Winform程序(

winform 实现选择城市列表

先上图 #region 选择城市 /// <summary> /// 点击字母事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void item_Click(object sender, EventArgs e) { LinkLabel lbl = sender as LinkLab

GDI、DirectX、WPF、Winform等绘图相关关系梳理

绘图引擎方面,Windows下常用的为GDI.GDI+.DirectX.OpenGL等引擎,而Winform.MFC.WPF.Qt等则是用来实现对这些引擎调用的工具,属于更上层的范围,这几个绘图引擎中,前三者都是微软自己的东西,因此如果用C#来写的话用这几个引擎相对就会方便些. WPF采用的是DirectX作为底层绘图引擎,Winform和MFC则都采用GDI+,因此,Winform和MFC基本的绘图效率应该是接近的. DirectX是可以实现硬件加速的,如果PC上有GPU的话,那么WPF的图形

WPF与WinForm开发有什么区别?

转自http://hi.baidu.com/leoliu83/blog/item/1d1a4a66dcb41134aa184cfd.html WPF开发于WinForm之后,从技术发展的角度,WPF比WinForm先进是不容置疑的.我觉得WPF相比于WinForm有下面的一些较好的特性: 解决Window Handle问题   在Windows GDI或WinForm开发中复杂的GUI应用程序,会使用的大量的控件,如Grid等.而每个控件或Grid cell都是一个小窗口,会使用一个Window

【.Net】在WinForm中选择本地文件

相信很多朋友在日常的编程中总会遇到各钟各样的问题,关于在WinForm中选择本地文件就是很多朋友们都认为很难的一个学习.net的难点, 在WebForm中提供了FileUpload控件来供我们选择本地文件,只要我们将该控件拖到页面上了,就已经有了选择本地文件的功能了.而在 WinForm中,并没有为我们提供集成该功能的控件,但为我们提供了OpenFileDialog类,我们可以利用该类来打开与选择本地文件. OpenFileDialog类,提供了提示用户打开文件的功能,它有如下属性和方法: 属性

WPF和winform的区别

WPF,即windows presentation foundation,windows呈现基础,属于.net framework3.0,是微软推出取代winform的产品,能做到分离界面设计人员与开发人员的工作,提供多媒体交互用户图形界面,三大核心程序集是presentationcore.presentationFramework.windowsBase WPF和winform最大的区别在于WPF底层使用的DirectX,winform底层使用的是GDI+,所以WPF的图形界面上更胜一筹 GD

WPF使用Winform自定义控件

在WPF的用户控件中使用Winfrom自定义控件的过程: 1.添加引用 WindowsFormsIntegration.dll System.Windows.Forms.dll 2.在要使用WinForm控件的WPF窗体的XAML文件中添加如下内容: xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" xmlns:wfi ="clr-namespace:System.Windo