WPF和Windows窗体应用程序的显示差异
实际上,我已经开始学习
WPF了.我有几个月的开发
Windows窗体应用程序的经验.虽然,我得到了WPF应用程序的含义,但我仍然无法根据它们的输出来区分两者之间的差异.
参考这个Link: Device Independent Pixel (DPI),我了解到无论何时操作系统呈现WPF应用程序,它都会根据其分辨率自行管理其大小. 因此,为了检查这种差异,我在两个框架中创建了两个演示应用程序并且也改变了分辨率.但是我没有发现任何令人满意的差异.这可以解释它是一个WPF应用程序,这个是一个Windows窗体应用程序. 它不会在最大化时创建任何滚动条,也不会在更改分辨率时使按钮变大或变小. 我在某处读过Visual Studio 2010已经在WPF中重写过了.但在我的实验中,我看到了(在改变桌面的分辨率时),它使文本和图形不可读/模糊.在重新调整窗口大小时,除菜单栏外,所有内容都被隐藏起来.并且菜单栏内容正在改变其定位,例如最右边的一个菜单项目正在向下移动.为什么? 请让我正确和正确再说一点(这个显示问题).
要正确回答这个问题,我应该写一整章,但我保持简短:
WPF应用程序和Windows窗体应用程序之间有三个主要区别:布局,渲染,演示 布局: WPF layout system在动态安排元素方面提供了更大的灵活性.它基于元素边界框(与WinForms中的precise pixels相对)和测量与排列机制(与WinForms中的UpdateLayout相对),可自动动态地查找每个元素的位置,而无需手动更新. 基本上,首先测量所有元素边界框,然后使用多种方法排列,例如Measure,MeasureCore,ArrangeCore,MeasureOverride等. 与WinForms不同,在WPF中,你有一个像素完美的大小,在WPF中你可以获得更多的选项和复杂性,例如Width,ActualWidth和DesiredSize(甚至Transforms为LayoutTransform). 这就是为什么 >当您键入WPF TextBox时,其宽度可能会增加并推动其他元素,甚至将某些元素推入新行(如您观察到的菜单栏) 渲染: WPF使用布局的双数据类型(而不是像素完美的WinForms),因此有时您可能会看到边缘模糊,但SnapToDevicePixels = true可以避免这种情况. WPF在利用GPU渲染GUI方面效率更高.在Windows窗体应用程序和WPF应用程序中尝试使用30×30 TextBox的网格.无论你编写WPF有多乱,它都不会闪烁,它仍然比Windows Forms运行得快得多.即使添加一些动画,视觉效果和样式也不会像Windows窗体那样损害您的性能. 备注:为避免Windows窗体应用程序中的速度降低和闪烁,应将窗体的DoubleBuffer设置为“true”. 您可以使用任何Transform作为RenderTransform轻松实现平滑缩放/旋转,或在WPF中开发自定义GPU-based shader effects等等. (我认为每个人都同意在WinForms中做这些事情是可行但真正的痛苦,如果不是因为表现不好而沮丧,你很可能会放弃并转移到GDI或DX.) 最后也是最重要的: 专注于演讲: 在开发WPF应用程序时,您必须停止在Windows窗体中思考:不再有UI事件,通过名称访问控件并在代码隐藏中编写逻辑并开始在WPF中思考:绑定,命令,资源,样式,模板,转换器,DependencyProperties和他们的回调. > WPF的真正力量在于“视图”和“逻辑”的分离,这可以通过MVVM pattern实现. 如果您计划切换到WPF,那么您已做出了正确的决定.永远坚持MVVM,你会没事的!即避免代码隐藏(在.xaml.cs文件中编码),XAML名称(除非仅在XAML中使用)和UI事件尽可能多. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 我们可以在Microsoft Bot Framework(.NET / C#)中
- windows – 有关如何使用单个物理适配器模拟八个
- Windows – Internet Explorer – SID S-1-5-5-0
- 如何在Windows上使用CMake进行非交互式构建?
- Windows文件和文件夹“属性”A或C.
- 安装程序 – 使用Wix安装32位和64位驱动程序?
- windows – 具有Splatting错误的新ADUser
- powershell – Nuget.exe安装 – Microsoft.CSha
- windows – 如何为SQL Server创建最小权限用户?
- windows – 我可以使用什么来自动安装新PC所需的