马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
java的设计机制:首先产生一个中间码,第二部编译为本地(机器)码。这个机制有很大的缺点。程序 弁言:你大概传闻过Avalon(如今被称为WindowsPresentationFoundation,或WPF),大概看过相干的屏幕截图或demo,可是如今你能够亲手实验了。让我们入手下手创立下一代Windows使用程序吧。
微软公司早在2003年洛杉矶的PDC上就发布了Avalon,他们将其视为下一代用户界面手艺,而且失掉了开辟者和用户的分歧赞成。
在2005年的PDC上,微软公司展现了比2003年加倍完全的Avalon版本,并给它取了一个官方新称号:WindowsPresentationFoundation(WPF)。在此之前,它已完成了从演示软件到入手下手阶段alpha版本的API的变化。到了几个月以后的明天,它又发展成为加倍先辈的beta版本--你可使用它来开辟你的下一代用户界面程序了。
那末,WPF是甚么,为何它那末主要呢?
起首,它明晰而又无效的将用户界面和程序完成分隔。它使得计划可视化的用户界面的计划者和编写外部中心代码的开辟职员能够并行事情。这长短常主要的:
・将二者分隔,软件开辟公司可使得计划者们会合精神将计划事情做得更好,同时闪开发者撑持他们。
・跟着软件外包和订购的渐渐流行,WPF使得一些贸易的计划者们可以更好的处置界面计划事情,并集成一些复杂的功效,而购置的中心代码可以自力的完成外部的一些关头逻辑而不搅扰计划历程。
・它更好的撑持使用软件的国际化。分歧的自力的界面可使用分歧的当地化计划,而外部的代码是通用的。
・它撑持软件的"空标签":能够为分歧的用户接纳定制的界面而坚持中心的逻辑稳定。开辟者们创立程序逻辑,然后为分歧的用户利用分歧的界面并贴上他们的商标等。
WPF利用一种基于XML的言语来界说用户界面从而完成上述的事情。这类言语被称为XAML,XML使用程序标志言语。
其次,WPF利用一种基于向量而不是基于光栅的绘制引擎,这和曹其的Windows的绘制引擎是一模一样的。光栅绘制引擎经由过程在屏幕上绘制象素点来绘制外表。象素只是点;如许的话,假如屏幕分辩率(DPI,每英寸点)增添了,它的效果就会变差。跟着如今屏幕都接纳超高DPI的分辩率,字体必需利用成百上千个DPI来到达必定的扫瞄效果。好比微软Word里缺省的英笔墨体12号的TimesNewRoman,在如今的一般分辩率情形下效果还能够可是到了超高分辩率的显现器上效果就不可了。办理这些基于光栅的图象的点将会损耗大批的处置才能,同时也是很华侈的。而接纳基于向量的体例来替换象素,在一个可扩大的坐标系里绘制字体和其他线型,使得它们能够自力于DPI。想一想WindowsMetafile(WMF)和位图文件(BMP)之间的差异你就分明了。同时,向量图也使得一些变更如3D,扭转和动画变得加倍便利和易于操纵。
好,实际就讲到这里,上面入手下手我们的第一个基于WPF的使用程序之旅吧。
入手下手事情
起首,在你入手下手前,我激烈倡议你卸载一切和WinFX,WindowsSDK和其他一些开辟的测试版本工具有关的一切器材。现实上,我乃至以为,删撤除VS2005和.NETframework2也使很不错的主张。你能够实验着利用预安装它们的呆板,可是我以为最好仍是用一台对照"洁净的"呆板。你能够实验着利用微软的VirtualPC大概VmwareWorkstation来运转一个假造机镜像以到达我所说的请求。其次,在你入手下手之前,你必要下载一个清算软件CCleaner.com。这个软件会清算你的注册内外一些坏的,老的或不必的键值将它们清算失落。
上面你必要下载而且安装一些软件:
1.起首你必要WinFXruntimecomponents。
2.安装以后重启--上面安装VS2005假如你没有安装的话。假如你没有正式版本,下载一个freeExpressEdition。
3.然后下载WindowsSDK--1G巨细摆布。注重你最好是下载IMG文件并刻录到DVD上大概利用假造光驱来安装它。不幸的是,我如许做每次都不乐成。一切,我保举你下载IMG文件,而且下载相干的Setup文件(不异页面下载)。将它们放到你硬盘的统一目次下。运转Setup程序举行安装。
4.最初你必要下载VisualStudiodevelopmenttools(Orcas)来举行WinFX开辟。它包括了VS里的"Cider"计划器来编纂XAML。
5.最初你必需下载ExpressionDesignerforXAML。
作为程序员你可使用Cider工具来在VS.NET里创立基础的XAML用户界面,如许的体例你会感应很熟习,和在VS中举行一样平常的Windows窗体计划差未几。可是,假如如果用一些XAML供应的初级特征,我倡议你仍是研讨一下ExpressionDesignerforXAML。
第一个WPF程序
假如一切的工具都安装准确,你就能够开辟你的第一个WPF程序了。翻开VS2005,选择文件->新建工程。你将会看到工程对话框,如所示。
在中,你能够看到一套新的工程范例,名为Windows(WinFX),包含WinFXWindows程序,服务库,扫瞄器程序和控件库。它们分离用来创立XAML客户端程序,Indigo服务,XAML扫瞄器(Web窗体)程序,和控件库。
这篇文章里,我次要解说创立一个WinFXwindows使用程序的流程,以是我们选择和其对应的工程模板。
当你第一次创立这个程序的时分,你将会看到和尺度的VS计划情况相似的界面,可是现实上它是一个VS的新的XAML计划器,代号"Cider"。如所示。
假如你细心看,你会发明在计划面板的下部有一个新tab,名为"Xaml"。点击它,你会看到以后计划的XAML,这个XAML包括了一个复杂的对话框,显现了一个lable,一个textbox,一个按钮:
<Windowx:Class="AvalonHelloWorld.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/
presentation"xmlns:x=
"http://schemas.microsoft.com/winfx/2006/xaml"
Title="AvalonHelloWorld"Height="300"Width="300"
Opacity="0.5">
<Grid>
<ButtonWidth="NaN"Height="37"
VerticalAlignment="Bottom"
HorizontalAlignment="Stretch"Grid.Column="0"
Grid.ColumnSpan="1"Grid.Row="0"
Grid.RowSpan="1"
Margin="114,0,8,8"
Name="button1">Button</Button>
<LabelWidth="NaN"Height="30.276666666666667"
VerticalAlignment="Top"
HorizontalAlignment="Stretch"
Grid.Column="0"Grid.ColumnSpan="1"
Grid.Row="0"
Grid.RowSpan="1"
Margin="16,25.7233333333333,89.37,0"
Name="label1"FontSize="20">
EnterTextHere:</Label>
<TextBoxWidth="NaN"Height="42.276666666666671"
VerticalAlignment="Bottom"
HorizontalAlignment="Stretch"
Grid.Column="0"Grid.ColumnSpan="1"
Grid.Row="0"
Grid.RowSpan="1"Margin="16,0,34.37,157"
Name="textBox1"></TextBox>
</Grid>
</Window>
当你改动Cider可视化编纂器里的对话框的结构的时分,工具会主动更新XAML的内容。
对控件的基于计划者的事务增加机制还没有被Cider所撑持,不外假如手工对XML举行一些修正就能够很简单的增添一些事务。好比,你能够手工为"Click"属性增添一个点击事务处置:
<ButtonClick="ButtonClick"Width="NaN"Height="37"
VerticalAlignment="Bottom"
HorizontalAlignment="Stretch"
Grid.Column="0"Grid.ColumnSpan="1"Grid.Row="0"
Grid.RowSpan="1"Margin="114,0,8,8"
Name="button1">Button</Button>
你能够看到,这里做的就是为按钮增添了一个新的"Click"属性,而且给出了点击按键事务句柄的称号。假如你选择了"Source"谁人tab,你能够为这个事务创立处置句柄。
Avalon利用一种被称为"RoutedEvents"的机制来绑定XAML和后端代码,好像其名--事务在运转时在自力的XAMLUI和代码之间互相传送。
如许的话,你必要声明事务句柄来利用RoutedEventArgs参数:
voidButtonClick(objectsender,RoutedEventArgse)
{
System.Windows.MessageBox.Show("HelloWorldto:"+
textBox1.Text);
}
假如你此时运转程序,你将看到WPF基于向量的引擎已入手下手事情了,如所示。
如许你就完成了你的第一次Avalon的进修之旅,大概它没有设想中的冲动民气,可是究竟你已入手下手把握这一先辈手艺了。
利用Expression来计划XAML
MicrosoftExpression是一个比基础的Cider工具加倍壮大的XAML计划工具,它包括在VS.NET的WinFX工具会合。这一节里,你将看到怎样利用它来计划一个XAML界面而且和上文一样将代码分解到VS.NET中往。注重这里也一样展现给你,计划者和开辟职员怎样自力的天性事情,来利用分歧的工具发扬各自所长。
翻开MicrosoftExpression,创立一个新的工程,选择WindowsExecutableProject。如所示。
这里将会创立一个包括XAML文件和后端C#文件的VS兼容工程。你能够在Expression中编纂代码,不外编纂器并没有包括开辟职员所熟习的集成调试和其他功效。不外在不久的未来,Expression将会同意计划者和程序员共享一个办理工程的通用文件格局。
你可使用Expression交互式计划器中的工具来计划一个加倍花梢的界面。这里我计划了一个和新近给出的例子一样的界面--HelloWorld程序。不外,我利用了一些Expression的扭转战争行四边形的效果来使得它显得加倍花梢。如。
Expression保留了一个包括一切XAML和.CS文件的.csproj文件,以是创立了界面以后,你就能够在VS2005中翻开和利用不异的工程了。
当你在VS2005中翻开工程,你将会看到工程设置和你入手下手在创立一个新的WinFXWindows程序的时分差未几。一个小小的分歧点在于 Expression将你的XAML构造为"Scenes"而不是"Windows",以是外部XAML是有点分歧的,当你运转它的时分XAML在一个scene容器内举行绘制,如所示。
你如今能够像下面一样给按钮把持增添代码;不外你必需和XAML举行动静传送,集成化还没有给你做好它。一样,你大概会失掉一个Expression增添的<Trigger>标志激发的毛病。删撤除它,然后你就能够运转你的程序了。
图六显现了一个运转中的程序(在Scene检察器中),当用户点击按钮时会弹出Hello,world动静。
停止语
在这篇文章里我们次要先容了WindowsPresentationFoundation,之前它被叫作Avalon,而且研讨了基于向量的绘制引擎给你的Windows界面计划带来的优点。你利用分歧的体例创立了一个复杂的程序,入手下手是利用了"Cider",它的XAML编纂器未来会集并进进VS2005。然后我们利用了MicrosoftExpression交互式计划器来完成不异的事情。由于在Expression和VS2005里的文件集是兼容的,你能够看出界面计划师可使用Expression来计划程序原型然后再将其给开辟职员举行中心代码开辟,为使用程序增加程序逻辑等。
在从此的文章里,我们将先容利用VS2005和Cider来创立2D的Windows窗体程序,而且会探究一些完成3D效果的API和WindowsVista里的新的Aero函数功效。这将会是一次奇奥的程序之旅。
中间码是基于一个虚拟机器。源代码是最高层的,理论上从源代码开始直接编译成本地码能提供最大优化的。而中间码只能是转译成本地码,效率上难免受到损耗。根据虚拟机器所设定的体系结构的特点,和本地机器的差异的多少。 |