WinForm是·Net开发平台中对Windows Form的一种称谓。

WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。是微软推出取代winform的产品,能做到分离界面设计人员与开发人员的工作,提供多媒体交互用户图形界面,三大核心程序集是presentationcore、presentationFramework、windowsBase

WPF和winform最大的区别在于WPF底层使用的DirectX,winform底层使用的是GDI+,所以WPF的图形界面上更胜一筹

(推荐学习:PHP视频教程)

GDI+(Graphics Device Interface)图形设备接口,它的主要任务是负责绘图程序之间的信息交换、处理,所有windows程序的图形输出

DirectX(Direct Extension)多媒体编程接口,加强3D图形和声音效果,有很多API组成。按照性质分类可分为四大部分:显示部分,声音部分,输入部分和网络部分

在WinForm程序开发时,最头疼的一个问题就是,worker线程修改控件的属性而导致程序崩溃,而且这种非法操作并不是每次都失败。WinForm控件提供了InvokeRequired属性来判断当前线程是不是控件创建线程。问题是当控件树很深是,这个属性会比较慢。

WPF开始设计的时候,就考虑到了多线程的问题。大部分的WPF类都继承于DispatcherObject。DispatcherObject实际就是对Dispatcher的一个简单封装。Dispatcher提供了类似InvokeRequired的方法(CheckAccess)。这个方法只是比较线程的ID,所以会很快。另外,Dispatcher提供了优先队列,异步调用,Timer等功能,简化了开发多线程GUI程序。

控件的Composition

在WinForm如果要实现一个有Checkbox的下拉菜单,将不得不处理复杂的Window消息。而通过WPF控件的Content Model和Layout系统,WPF控件可以包括任何类型的控件,甚至.Net CLR对象。很多现代的控件厂商也提供了Composition的控件,实现方法和WPF的Content模型也比较相似。WPF开发团队应该借鉴了Infragistics的很多想法。有了这个基础,开发新的WPF控件更加简单了。

XAML

个人觉得XAML应该是WPF中比较划时代的东东。通过XAML,我们可以用文本的方式描述复杂的Object Graph。这个想法在VB中就有了,不过XAML更简化,以便于使用工具来生成XAML。通过Command,Routing Event等机制,界面设计人员和程序员有比较清楚的界限。

【转】wpf和winform的区别相关推荐

  1. WPF和WinForm的区别

    文章目录 一.区别 二.对比 三.总结 一.区别 WPF,即windows presentation foundation,windows呈现基础,属于.net framework3.0,是微软推出取 ...

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

    Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决 参考文章: (1)Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决 (2)https://www. ...

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

    建议87:区分WPF和WinForm的线程模型 WPF和WinForm窗体应用程序都有一个要求,那就是UI元素(如Button.TextBox等)必须由创建它的那个线程进行更新.WinForm在这方面 ...

  4. 编写高质量代码改善程序的157个建议:第87个建议之区分WPF和WinForm的线程模型...

    今天有时间了,继续<编写高质量代码改善程序的157个建议>的阅读,当我阅读到建议87的时候,里面的一些代码示例和文中所说的不一致了,是不是我现在用的是NetFramework 4.0的缘故 ...

  5. wpf和winform的那点区别

    一提起winform和wpf有啥不同,可能大部分人都会想到wpf拥有漂亮的界面.wpf中也可以使用winform,大部分情况下,都没有任何问题,极少的情况下,可能会出现问题. 我们就来看一下: voi ...

  6. .net Core 3 preview 3试用 WPF,winform桌面开发

    安装最新的 vs2019 preview 16.1 此版本中,还没有vb.net创建 winform,wpf项目的模板,就用C#试了一下wpf. 编译后生成如下文件 dll文件运行方式: 命令行: d ...

  7. 你知道WPF与WinForms的区别吗?

    介绍 WPF的缩写指微软的Windows Presentation Foundation,而WinForms是Windows Forms Applications的简单组合.这两个都是微软的Windo ...

  8. WPF 与 WinForm 调用系统右键菜单/资源管理器右键菜单/桌面右键菜单

    原本此类是 http://www.codeproject.com 上高手写的 ShellContextMenu 类 但是该类原本貌似是为 WinForm 设计的 ,  默认的命名空间和引用也是 Win ...

  9. 【C#】WPF和winform窗体贴边隐藏(类似QQ)

    [WPF]实现窗体贴边隐藏 1.新建WPF项目Test,主窗体MainWindow.xaml,在后台MainWindow.xaml.cs填写下面的代码.主窗体调用Hide类,实现隐藏功能. //有些引 ...

最新文章

  1. Java Web中的Filter和Interceptor的区别
  2. NTFRS事件ID:13568
  3. python coding style guide 的快速落地实践——业内python 编码风格就pep8和谷歌可以认作标准...
  4. MSSQL 2008 数据库变成可疑状态
  5. 将 Firefox 浏览器的书签导出
  6. 实现两个数的交换(异或,加减)
  7. 深度学习——用向量重新组织输入数据
  8. C语言实现支持增删查改的通讯录
  9. 如何使用react-tools将jsx编译成JavaScript
  10. myeclipse+tomcat-热部署
  11. 陈天桥:为何总是半夜惊醒?《前程密码》
  12. wordpress 表格文字对齐_不要再用空格来对齐Word文字了,这样做,3秒对齐所有Word文字...
  13. 6D姿态估计算法汇总(上)
  14. 北京内推 | 微软亚洲研究院机器学习组招聘NLP/语音合成等方向全职研究员
  15. 第六届ACM省赛总结--吕云飞
  16. 地震点、火点和气候数据收集
  17. 《观察与思考》:相信中国,寻找下一个比尔·盖茨
  18. [Pytorch框架] 5.2 Pytorch处理结构化数据
  19. css中什么是伪类选择器?伪类选择器的简要介绍
  20. Spring - 数据库读写分离

热门文章

  1. 常用开发环境搭建配置教程(OneStall)
  2. 调试nodejs项目接口,使用Posman,用req.body拿不到数据
  3. 几个python小程序
  4. C++ 初始化列表初始化列表性能问题的简单的探索
  5. FineReport实现java报表统计图表的效果图
  6. 简单的实现RAII封装。
  7. 翻译记忆软件:Trados 7/2006,兼容性和基本用法讨论
  8. [Leetcode][第60题][JAVA][第k个排列][回溯][DFS][剪枝]
  9. [Markdown语法][快速入门][CSDN]
  10. 计算机科学1pdf,计算机科学导论1.pdf