C#控制台程序,Winform,WPF的区别

我用下来,感觉有以下几个大区别:WPF的线程模型和winform的线程模型不同WPF到处用到数据绑定,winform在列表中才用的多WPF支持3D,winform本身没有,需要引入托管的DXWPF有现成的动画机制,winform没有WPF的界面可以用XAML写,后台逻辑用C#,winform全部C#。也就是WPF真正做到界面与逻辑分离。




都是做界面的东西 wpf是调用direct 直接用显卡绘图 支持3d等,性能高,做的界面漂亮 而且wpf用xaml语言写界面就跟写网页一样 实现各种半透明等特效方便。
winform是调用GDI+绘图,如果各种特效实现起来困难 需要手工GDI重绘,各种特效实现起来麻烦。但是对于老程序员因为熟悉GDI所以一时割舍不下。
还有因为WPF比winform对于绘图因为多了一层封装,所以实现简单界面反而性能不如winform




WINDOWS窗体应用程序与WPF应用程序的区别?
用WPF更容易做的漂亮
感觉有以下几个大区别:
WPF的线程模型和winform的线程模型不同
WPF到处用到数据绑定,winform在列表中才用的多
WPF支持3D,winform本身没有,需要引入托管的DX
WPF有现成的动画机制,winform没有
WPF的界面可以用XAML写,后台逻辑用C#,winform全部C#。也就是WPF真正做到界面与逻辑分离。
 
WPF开发于WinForm之后,从技术发展的角度,WPF比WinForm先进是不容置疑的。我觉得WPF相比于WinForm有下面的一些较好的特性:
解决Window Handle问题 
在Windows GDI或WinForm开发中复杂的GUI应用程序,会使用的大量的控件,如Grid等。而每个控件或Grid cell都是一个小窗口,会使用一个Window handle,尽管控件厂商提供了很多优化办法,但还是会碰到Out of Memory或"Error Create Window handle",而导致程序退出。
  
WPF彻底改变了控件显示的模式,控件不在使用窗口,也就不会占用Window handle。理论上,如果一个WPF只有一个主窗口的话,WPF只会使用一个Window handle(如果忽略用于Dispatcher的隐藏窗口的话)。所以WPF GUI程序不会出现Window handle不够用的情况。
多线程的处理
Dependency Property
  
在WinForm开发中,经常碰到的问题就是一个控件的值变了,其他控件也会跟着改变。解决办法,要不是通过写代码,要不是通过数据绑定,前者是界面和代码没法分开,后者还不够灵活。而WPF在这方面通过XAML可以简单的把相关的属性联系起来,通过Extension可以实现复杂的绑定关系。
    
总的来说,我觉得WPF应该是GUI发展的一个延续,原来GUI中复杂的东西,现在通过简单的文本就可以实现。














控制台就是在dos窗口运行的,窗体运行程序就是有windows窗口的




控制台的话是仿dos,单任务;window窗口是消息机制多窗口。
若是console的话,vs里进行可执行文件的代码前,产生该窗口;
若是window的话,vs不产生console窗口,应用成雪的窗口由用户自己创建




加载的程序集不一样,输出方式也不一样。控制台是调用windows系统的cmd命令台输出的。
windows窗体是调用windows的基础框架下的窗体进行显示的。说个不是很确切的比喻,
控制台相当于dos,窗体程序相当于windows。(个人见解,勿喷)




windows应用程序开发出来以后就是像你常用的那些软件一样,有窗口,有按钮,有菜单,开发过程比较艰巨(如果你想开发一个功能强大程序的话),这种编程叫做可视化编程,窗口的大小,按钮,菜单等控件都是自己手动往上托,很简单、很方便、但是逻辑程序是需要自己编写的。不过,开发成功以后,看着自己制作的小软件在桌面上运行,是不是有一种神圣感?呵呵




控制台应用程序比较简单,一般是初学者在实践过程中需要的一个展现平台。也就是一个命令窗口,通过一些简单的程序,将一些数组、字符串等打印在控制台(一个黑不溜秋的命令窗口)上。




Windows应用程序是windows窗体应用程序,就是有图形化的GUI、有Windows消息循环机制的。控制台应用程序多了一个控制台,是命令行的CUI(那个黑黑的Dos窗口)。
程序的文件头某个位置指定了该程序是IMAGE_SUBSYSTEM_WINDOWS_GUI还是IMAGE_SUBSYSTEM_WINDOWS_CUI。图形化的GUI,或
命令行的CUI。如果是CUI,那么该程序就是控制台程序,它启动的时候就会被自动分配给一个控制台(Console)。在GUI程序中,窗口不是必要的,虽然绝大部分程序都有。准确的说,控制台程序也可以创建窗口(MessageBox.Show("")就可以了)。窗口程序也可以拥有一个控制台(AllocConsole API)。




从程序的角度来说,没有功能上的区别。就是说,两种应用程序都可以做一样的事情,有些时候Console应用程序输出还更方便一些。 


但是从用户体验的角度来说,差别就很大了。一个是标准的Windows应用程序的样子,一个是cmd.exe运行时候的那种样子。
  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值