只要我编程,我总是使用MS技术。有DOS,MFC,VB6,然后.net与WinForms和现在的WPF。
在所有这些技术中,GUI-thing总是或多或少相同,因为它基于Win32(DOS除外)。现在WPF已经彻底改变了。 MS引入了许多新的可能性,从构建UI,无形控件,动画等的声明方式开始。我非常喜欢这种新的UI技术,还有它下面的基础知识(DependencyProperty-System,RoutedEvents等等)。
但我不知道,因为我总是使用MS技术,如果整个构造是特定于MS的发明,或者这些东西只是对现有技术和使用的技术和模式的良好汇编在许多其他现代环境中。
是否有一些关于现代UI技术比较的信息,这些技术显示了链接和常见模式?
答案 0 :(得分:12)
如果你学习图形技术,你会发现WPF并不是那么引人注目 - 它是现代硬件和现代Windows上一些非常完善的概念的实现。为了说明一下,1991年印在我书架上的一本旧书,“Computer Graphics, Principles and Practice”包含了很多WPF的构思。
WPF与GDI(前身Windows图形系统)最根本的区别可能是WPF是保留模式图形系统,而GDI是非保留模式。这意味着在WPF中,有一个可视树,数据结构代表要查看的视觉场景,定期进行剪裁和栅格化,并且数据结构始终保留在内存中,由WPF本身管理。 / p>
一旦理解了这一点,WPF的核心就是表示场景的树形结构,人们发现其余部分建立在处理在成熟的3D显示系统(DirectX)上光栅化可视化树的细节的原则之上。 。线程化(DispatchObject
),数据绑定机制(DependencyObject
)以及布局,输入,焦点,事件(UIElement
)和样式({{1}的UI惯用语的分层结构在Win32或其他UI构造中,思想都是自然的进步。举一个后者的例子:即使Win32中没有像FrameworkElement
这样的东西,一个流行的3D工具(Maya),它代表一个3D场景作为有向无环图有一个类似的子系统,其中节点有属性,当属性更新时,通过图中的节点连接推送值,并且对该属性感兴趣的所有节点都会收到新值的通知。由此可以看出,一旦你有了一个中央数据结构(树或图),在新功能上进行分层是一个直接的软件工程问题。
说明了这一切之后,WPF应该得到认可:成熟的水果,体现了数十年的研究,试验和错误,构建用户界面和图形技术,以及构建富客户端应用程序的坚实基础。将来
答案 1 :(得分:5)
这不仅仅是MS特定的结构,正如你所说的那样。还有其他基于相同原理的类似技术(用于定义UI的类似XML的标记) - JavaFX,Adobe Flex,Flash等。我无法找到有关每种常用模式的具体信息,但有很多comparisons between them.
答案 2 :(得分:2)
在我看来,WPF受到其他一些技术的启发 - 例如来自Swing / Java的StackPanel。此外,还有一个描述UI的XML和一个单独的代码文件的概念 - 请参阅Adobe Flex,其中包含XML和ActionScript。
但是,但是,在设计WPF时,微软做得很好。他们肯定受到其他一些概念的启发,但肯定添加了很多功能,比如DependencyProperties,这是一个新概念,据我所知(如果我错了,请纠正我)此外,WPF似乎是一种非常适合未来发展的技术,因为它不仅在MS桌面操作系统上推动,而且在Silverlight上推动,因此也适用于Web解决方案和即将推出的Windows Phone 7。
答案 3 :(得分:2)
对我来说,WPF是所有其他MS技术中最好的技术。我已经使用了一段时间,我应该说我很高兴我们有比WinForms更好的东西。 WPF对于微软来说是非同寻常的,但在某些方面,例如动画,不适用于Adobe等其他公司。 Flash中的动画效果要强得多。为了获得同时工作的流畅动画,您可能需要在较低级别的.NET上编码并需要一个好的图形卡。