为.NET程序批上WPF的绚丽外衣(1)
微软公司早在2003年洛杉矶的PDC上就公布了Avalon,他们将其视为下一代用户界面技术,并且得到了开发者和用户的一致赞同。
在2005年的PDC上,微软公司展示了比2003年更加完整的Avalon版本,并给它取了一个官方新名称:Windows Presentation Foundation(WPF)。在此之前,它已经完成了从演示软件到开始阶段alpha版本的API的转变。到了几个月之后的今天,它又成长成为更加先进的beta版本--你可以使用它来开发你的下一代用户界面程序了。
那么,WPF是什么,为什么它那么重要呢?
首先,它清晰而又有效的将用户界面和程序实现分开。它使得设计可视化的用户界面的设计者和编写内部核心代码的开发人员可以并行工作。这是非常重要的:
·将两者分开,软件开发公司可以使得设计者们集中精力将设计工作做得更好,同时让开发者支持他们。
·随着软件外包和订购的逐渐风行,WPF使得一些商业的设计者们能够更好的从事界面设计工作,并集成一些简单的功能,而购买的核心代码能够独立的完成内部的一些关键逻辑而不干扰设计过程。
·它更好的支持应用软件的国际化。不同的独立的界面可以使用不同的本地化方案,而内部的代码是通用的。
·它支持软件的"空标签":可以为不同的用户采用定制的界面而保持核心的逻辑不变。开发者们创建程序逻辑,然后为不同的用户使用不同的界面并贴上他们的商标等。
WPF使用一种基于XML的语言来定义用户界面从而完成上述的工作。这种语言被称为XAML,XML应用程序标记语言。
其次,WPF使用一种基于向量而不是基于光栅的绘制引擎,这和曹其的Windows的绘制引擎是截然不同的。光栅绘制引擎通过在屏幕上绘制象素点来绘制表面。象素只是点;这样的话,如果屏幕分辨率(DPI,每英寸点)增加了,它的效果就会变差。随着现在屏幕都采用超高DPI的分辨率,字体必须使用成百上千个DPI来达到一定的浏览效果。比如微软Word里缺省的英文字体12号的Times New Roman,在现在的普通分辨率情况下效果还可以但是到了超高分辨率的显示器上效果就不行了。管理这些基于光栅的图像的点将会消耗大量的处理能力,同时也是很浪费的。而采用基于向量的方式来替代象素,在一个可扩展的坐标系里绘制字体和其他线型,使得它们可以独立于DPI。想想Windows Metafile(WMF)和位图文件(BMP)之间的差距你就明白了。同时,向量图也使得一些变换如3D,旋转和动画变得更加方便和易于操作。
好,理论就讲到这里,下面开始我们的第一个基于WPF的应用程序之旅吧。
开始工作
首先,在你开始前,我强烈建议你卸载所有和WinFX,Windows SDK以及其他一些开发的测试版本工具有关的所有东西。事实上,我甚至认为,删除掉VS2005和.NET framework 2也使很不错的主意。你可以尝试着使用预安装它们的机器,但是我觉得最好还是用一台比较"干净的"机器。你可以尝试着使用微软的Virtual PC或者Vmware Workstation来运行一个虚拟机镜像以达到我所说的要求。其次,在你开始以前,你需要下载一个清理软件CCleaner.com。这个软件会清理你的注册表里一些坏的,老的或不用的键值将它们清理掉。
下面你需要下载并且安装一些软件:
1. 首先你需要WinFX runtime components。
2. 安装之后重启--下面安装VS2005如果你没有安装的话。如果你没有正式版本,下载一个free Express Edition。
3. 然后下载Windows SDK--1G大小左右。注意你最好是下载IMG文件并刻录到DVD上或者使用虚拟光驱来安装它。不幸的是,我这样做每次都不成功。所有,我推荐你下载IMG文件,并且下载相关的Setup文件(相同页面下载)。将它们放到你硬盘的同一目录下。运行Setup程序进行安装。
4. 最后你需要下载Visual Studio development tools(Orcas)来进行WinFX开发。它包含了VS里的"Cider"设计器来编辑XAML。
5. 最后你必须下载Expression Designer for XAML。
作为程序员你可以使用Cider工具来在VS.NET里创建基本的XAML用户界面,这样的方式你会感到很熟悉,和在VS中进行一般的Windows 窗体设计差不多。但是,如果要是用一些XAML提供的高级特性,我建议你还是研究一下Expression Designer for XAML。
第一个WPF程序
如果所有的工具都安装正确,你就可以开发你的第一个WPF程序了。打开VS2005,选择文件->新建工程。你将会看到工程对话框,如图1所示。
图1 |
在图1中,你可以看到一套新的工程类型,名为Windows(WinFX),包括WinFX Windows程序,服务库,浏览器程序和控件库。它们分别用来创建XAML客户端程序,Indigo服务,XAML浏览器(Web窗体)程序,和控件库。
转载于:https://blog.51cto.com/cnming/223667
为.NET程序批上WPF的绚丽外衣(1)相关推荐
- 在WinForm应用程序中嵌入WPF控件(转)
我们知道,在WPF界面上添加WinForm的控件需要使用WindowsFormHost类.而在WinForm界面上添加WPF控件该如何做呢?有没有类似的类呢?明显是有的,ElementHost就是 ...
- 在C# winform程序中调用WPF写的数学公式编辑器
由于工作原因,需要在程序中加入数学公式编辑功能,因此在网上找了不少开源数学公式程序.经过比较,最终选择了Math-Editor-master程序(可以在github上搜索此名称). 我的程序(简称主程 ...
- 小程序一次性上传多个本地图片,上拉加载照片以及图片加载延迟解决之道
一:小程序之一次性上传多个本地相片 最近由于项目需要所以学了下小程序,也做了一些东西,随后便有了以下的一些总结了,现在说说如何使用小程序一次性上传多个本地相片. 问题描述 最近做项目的时候要实现一个上 ...
- PHP程序员上相亲节目,结果遭女嘉宾瞬间全灭灯
一:一位PHP程序员上相亲节目之后,说自己是做PHP的,瞬间灯全灭了! 二:程序员:520到了,单身狗的我们,要不凑活一下吧! 三:程序员调BUG的时候,一定能调好的! 四:机智如我,怎么可能让你知道 ...
- 10.Azure应用程序网关(上)
应用程序网关这个功能主要又分2个子功能,一个叫"标准应用程序网关":一个叫"WEB应用程序防火墙(WAF)"."WEB应用程序防火墙(WAF)&quo ...
- 在winform程序中启动wpf窗体
有时候需要在winform程序中利用wpf的许多优良特性,如何在其中启动wpf窗体呢? 前提:MainWindow.xaml是从别的地方copy到这个项目的,值得注意的是,除了MainWindow.x ...
- 当微信小程序遇上TensorFlow:Server端实现补充
在前面一篇文章<当微信小程序遇上TensorFlow:Server端实现>中,我们探讨了微信小程序server端的实现.今天在调试微信小程序时才发现一个问题,那就是:微信小程序要求HTTP ...
- MVC应用程序实现上传文件(续)
前几天,有练习了<MVC应用程序实现上传文件>http://www.cnblogs.com/insus/p/3590907.html 那只是把文档上传至MVC应用程序下的某一目录之中. 其 ...
- 腾讯 Omi 团队发布 mps - 原生小程序插上 JSX 、Less 和 Cloud 的翅膀
写在前面 原生小程序插上 JSX .Less 和 Cloud 的翅膀 mps 是什么?为什么需要 mps?先列举几个现状: 目前小程序开发使用最多的技术依然是原生小程序 原生小程序的 API 在不断完 ...
最新文章
- homework-04
- hdu4467 graph
- [register]-ARM64重要寄存器介绍
- RabbitMQ基本概念
- Oracle goldengate 11g错误汇总
- [蓝桥杯2015决赛]密文搜索
- MatConvnet工具箱文档翻译理解三
- java_十进制数转换为二进制,八进制,十六进制数的算法
- 2015-11-19 22:34:54
- 强大的SQL计算利器-SPL
- 斐讯k2路由器v22.4.6.3版本刷breed刷华硕固件方法
- mac版docker配置加速
- win10升级补丁_官方win10教育版怎么样
- 网上商城系统支付方式如何配置?支付方式有哪些
- del在php中什么意思,delete键是什么意思
- 工作表保护密码忘了怎么办?
- 努力赚钱,是为了不让自己的爱情受到别人金钱的考验--这就是现实
- Bad notification for startForeground
- 安利一个小众又逆天的副业,轻松月入过万
- 5G纯干货|毫米波概述与优缺点
热门文章
- 用Java绘制柱形图_Java使用JFreeChart绘制柱形图
- 计算机科学与技术专业可以转哪些专业,计算机科学与技术学院本科生转专业实施细则...
- pytorch 卷积
- PyPA Packaging Python Projects
- TensorFlow tf.keras.layers.Lambda
- brackets ubuntu
- python上传钉钉媒体文件_钉钉媒体文件上传
- 中国数据中心行业深度分析
- 远程显示协议 2021-01-04
- Spring MVC学习总结(20)——SpringMVC传参总结