WPF与WinForm的对比
WPF与WinForm的对比
创建新项目
在vs2022中,这两者分别叫做WPF应用和Windows窗体应用。
渲染引擎和设计
WPF使用DirectX作为渲染引擎,支持更复杂和动态的UI,包括2D和3D图形、动画和丰富的样式和模板。
WinForms使用GDI+作为渲染引擎,主要支持传统的2D图形。它的界面元素(控件)更简单,功能相对有限。
设计过程
WinForm中,直接使用CSharp来描述页面,比如按钮就是System.Windows.Forms.Button,其有一些属性比如大小、位置、文字、对齐方式。
可以直接拖拽控件实现添加控件(也推荐这样做)
而在WPF中,使用一种标记语言xaml(读作匝某)来表示界面
比如按钮的话就是<Button Content="我的WPF按钮"></Button>
也可以使用工具箱中拖拽控件(但是重点不是学习拖,而是学习xaml语言)
WPF入门就是主要是学习xaml,以及xaml如何和CSharp代码交互
特性
数据绑定
WPF的控件属性可以绑定到CSharp代码的一些变量中,支持数据绑定和MVVM(Model-View-ViewModel)设计模式,使得UI和业务逻辑分离,易于管理和维护。
WinForm数据绑定能力较弱,必须每次修改就进行一次赋值操作,需要手动管理UI和数据之间的交互和更新。
自定义效果
实现自定义的效果来说,WPF更加的简单。WinForm可能涉及重绘的操作,比较麻烦,需要重新造轮子。
比如添加按钮圆角效果,WinForm可能需要新创建一个用户控件,重新绘制UI来实现。而WPF要实现圆角只需要修改Button的一个自带属性就好。
总结
学习WinForm可能更加的快速,上手简单。其在实现简单的界面上性能也更好
WPF的渲染是基于硬件加速的,对于复杂的UI和动画来说性能较好
选择WPF还是WinForms取决于具体的需求。如果需要高度动态的、富媒体的、高度定制化的现代UI,WPF可能是更好。如果是简单的、基于表单的应用,且开发时间有限,WinForms可能更为适合。
WPF与WinForm的对比的更多相关文章
- WPF与Winform的选择
最近公司计划对ERP系统全面升级,现有的ERP是简单的bs架构系统打算改版成cs.平时如自己写一些工具,小应用都是用winform就足够.但是界面总是很难看,据了解WPF在这一方面会强一些.因为之前对 ...
- WPF与WinForm开发有什么区别?
转自http://hi.baidu.com/leoliu83/blog/item/1d1a4a66dcb41134aa184cfd.html WPF开发于WinForm之后,从技术发展的角度,WPF比 ...
- 编写高质量代码改善程序的157个建议:第87个建议之区分WPF和WinForm的线程模型
今天有时间了,继续<编写高质量代码改善程序的157个建议>的阅读,当我阅读到建议87的时候,里面的一些代码示例和文中所说的不一致了,是不是我现在用的是NetFramework 4.0的缘故 ...
- Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决
有人会说不建议Wpf中使用Winform控件,有人会说建议使用Winform控件在Wpf下的替代方案,然而在实际工作中由于项目的特殊需求,考虑到时间.成本等因素,往往难免会碰到在WPF中使用Winfr ...
- 编写高质量代码改善C#程序的157个建议——建议87:区分WPF和WinForm的线程模型
建议87:区分WPF和WinForm的线程模型 WPF和WinForm窗体应用程序都有一个要求,那就是UI元素(如Button.TextBox等)必须由创建它的那个线程进行更新.WinForm在这方面 ...
- WPF和Winform中picturebox图片局部放大
原文:WPF和Winform中picturebox图片局部放大 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangyisen0713/artic ...
- WPF与WinForm的抉择
微软曾经对WPF(代号Avalon)抱很大的期望——新一代的华丽用户界面平台,一统Web应用和桌面应用,Flash杀手,尽管微软口头上不承认.几年下来,WPF确实实现了当初的预期的大部分功能,但离称霸 ...
- wpf和winform的区别
深入浅出WPF(7)——数据的绿色通道,Binding(上) 水之真谛关注6人评论28117人阅读2008-06-23 02:40:00 http://liuteimeng.blog.51cto.c ...
- WPF和WinForm的区别, 数据驱动与事件驱动的优势对比
Winform中针对界面的元素进行操作, 所有业务都关联在当前窗口的后台, 而在此之前, 无奈你是双击事件的添加方式.还是后台绑定事件的方式, 你都需要给每个元素一个固定规范的名称, 然后进行相关的数 ...
- WPF 调用WinForm控件
WPF可以使用WindowsFormsHost控件做为容器去显示WinForm控件,类似的用法网上到处都是,就是拖一个WindowsFormsHost控件winHost1到WPF页面上,让后设置win ...
随机推荐
- ChatBI≠NL2SQL:关于问数,聊聊我踩过的坑和一点感悟
"如果说数据是新时代的石油,智能问数就是能让普通人也能操作的智能钻井平台." 这里是**AI粉嫩特攻队!** ,这段时间真的太忙了,不过放心,关于从零打造AI工具的coze实操下篇 ...
- AtCoder Beginner Contest 396-e
原题链接 思路 看到这道题,很明显就能发现这道题其实跟图论有关,将\(A\)数组看成一张无向图,每一个节点\(i\)的点权就是\(A_i\),每两个节点\(i\)和\(j\)之间的边权就是\(A_i ...
- QWidget的isHidden和isVisible
文章目录 QWidget的isHidden和isVisible 问题的出现 QWidget的show()函数 QWidget的isVisible和isHidden 源码追溯 QWidget的isHid ...
- Golang 入门 : 包名与导入路径
math/rand包有一个Intn函数,可以生成一个随机数,所以我们需要导入math/rand.然后调用rand.Intn生成随机数. 等一下!Intn来自math/rand包,那为什么我们调用包的时 ...
- gazebo+rviz 仿真
博客地址:https://www.cnblogs.com/zylyehuo/ gazebo小车模型创建及键盘操控详见之前的博客 gazebo小车模型(附带仿真环境) - zylyehuo - 博客园 ...
- linux 根目录与分区
1.2 根目录的建立 大家一般都会知道根目录的产生方式,就是系统使用mount指令,将系统所在的分区挂载到[/]目录中,这样便完成了所谓的根目录.但你是否想过, 虽然看起来合理却有点诡异,因为根目录 ...
- 面试题-Java基础(新更新版)
前言 Java基础部分的题目,是我根据Java Guide的面试突击版本V3.0再整理出来的,其中,我选择了一些比较重要的问题,并重新做出相应回答,希望对大家起到一定的帮助. 修改记录 日期 修改内容 ...
- 【JDBC第3章】使用PreparedStatement实现CRUD操作
第3章:使用PreparedStatement实现CRUD操作 3.1 操作和访问数据库 数据库连接被用于向数据库服务器发送命令和 SQL 语句,并接受数据库服务器返回的结果.其实一个数据库连接就是一 ...
- 记载火狐浏览器下的一次新手级的js解密工作
警告:该随笔内容仅用于合法范围下的学习,不得用于任何商业和非法用途,不得未经授权转载,否则后果自负. 首先是需要解密的网站:https://www.aqistudy.cn/historydata/mo ...
- 【单片机】滑稽AT89C52表情实现
[单片机]滑稽AT89C52表情实现 零.原因 在群里看到了这样一个表情: 这是用51做的,刚好开发板上有8个小灯,想实现一下. 一.代码 新建工程,写入如下代码: #include<reg52 ...