`
ruilin215
  • 浏览: 1142951 次
  • 性别: Icon_minigender_2
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论
阅读更多

1. WPF技术调查

1.1 WPF简介

WPF的全称是Windows Presentation Foundation,是微软新发布的Vista操作系统的三大核心开发库之一,其主要负责的是图形显示,所以叫Presentation(呈现)。作为新的图形引擎,WPF是基于DirectX的,当然增加了很多新的功能。其2D3D引擎的强大看看Vista的界面就明白了,再加上其对Aero图形引擎的支持,更加让你刚到神奇。顺便提一下,Aero是专门为3D桌面开发的引擎,可以让桌面实现神奇的3D翻转,这绝对是操作系统有史以来的一次神奇尝试,虽然对硬件配置的要求也是惊人的,此前已有相关报道称,Vista对显卡十分挑剔就是出于运行Aero的考虑。

<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span style="mso-bookmark: _Toc200332910"><span lang="EN-US">1.1.1</span></span></chsdate> WPF的主要特性

图形服务

  所有的图形(包括桌面的窗口等对象)都将通过Direct3D渲染,旨在提供统一的图形显示通道,以实现高级的图形表现效果。

凭借Direct3D渲染图形的好处是,操作系统可以将图形处理任务委托给计算机显示卡上的图形处理芯片GPU,以减轻CPU的负担。

WPF支持任意比例无损缩放的矢量化图形,支持在2D应用程序中进行3D模型的渲染和交互操作。

互操作性

  WPF提供了同Win32的互操作性。通过嵌入模式,可以在Win32 代码中使用WPF,也可在WPF中使用Win32 代码。同Windows 窗体的互操作可通过ElementHost类和WindowsFormsHost类来实现。

媒体服务

WPF为二维图形提供了基本几何元素,以及一整套画刷、画笔、几何体和变形等工具。WPF的三维特性局限于Direct3D现有的功能。然而,WPF提供了与用户界面、文档和媒体介质等的紧密集成。这使得三维界面、三维文档、三维媒体成为可能。

WPF支持大多数通用图像格式,以及WMV, MPEG and AVI等视频格式。WPF支持时基动画而不是桢动画,从而使动画的播放速度不受系统性能的影响。WPF使用ClearType技术实现文本渲染。ClearType提供了次像素级定位、自然步幅、纵向反锯齿等特性。WPF同时支持OpenType字体特性。

数据绑定

  WPF 内置了一系列数据服务,使得开发人员可以在应用程序之间自如地绑定和操纵数据。WPF提供三种数据绑定方式:

  一次性:客户端忽略服务器端的数据更新的情况

  单向性:客户端对服务器端的数据有只读权限的情况

  双向性:客户端对服务器端的数据拥有读写权限的情况

用户界面

  WPF内置一系列控件:按钮、菜单、列表框等。

WPF提出了一个功能强大的概念:将控件的逻辑层和表现层分离。通过重载控件的模板就可彻底改变其外观。控件可包容任何其它控件,从而通过组合实现无限的控制功能。

<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span style="mso-bookmark: _Toc200332911"><span lang="EN-US">1.1.2</span></span></chsdate> WPF架构

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 289.5pt; HEIGHT: 391.5pt" alt="" type="#_x0000_t75"><imagedata o:href="http://www.cnblogs.com/images/cnblogs_com/yilinglai/WPF_Components.jpg" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.jpg"></imagedata></shape><shape id="_x0000_i1026" style="WIDTH: 319.5pt; HEIGHT: 390pt" alt="" type="#_x0000_t75"><imagedata o:href="http://www.cnblogs.com/images/cnblogs_com/sheva/48805/r_longhorn_renderpipe.png" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image003.png"></imagedata></shape>

<shape id="_x0000_i1027" style="WIDTH: 5in; HEIGHT: 195pt" alt="" type="#_x0000_t75"><imagedata o:href="http://www.cnblogs.com/images/cnblogs_com/yilinglai/WPF_Architecture.jpg" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image005.jpg"></imagedata></shape>

<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span style="mso-bookmark: _Toc200332912"><span lang="EN-US">1.1.3</span></span></chsdate> WPF程序

WPF除了构建传统的独立运行桌面应用程序,也支持基于XAML技术的浏览器应用(XBAP)。两种类型应用的编程模型很相似。

1) 桌面应用程序是可信度最高,采用ClickOnceMSI等软件安装在本地计算机的应用程序,对计算机资源拥有完全的访问权限。

2) 浏览器应用程序应用虽然看起来像是在浏览器内运行,实质上是创建了另一个进程。Internet Explorer 用户可以将 XBAP 直接下载到浏览器,而不必部署安装版 WPF 应用程序。此应用程序在 Internet Explorer 内运行,可以提供基于 WPF 的用户界面。但是从 Internet 网站下载和运行代码是一项危险的操作。为保护用户免遭恶意开发者的攻击,所有从 Internet 下载的 XBAP 都在部分信任沙箱中运行。基于 .NET Framework 提供的代码访问安全性,该沙箱会限制 XBAP 的操作。例如,从 Internet 下载的 XBAP 不能创建独立窗口或启动新窗口,不能显示由 XBAP 本身启动的保存对话框或访问隔离存储区以外的文件系统。尽管沙箱规定了种种限制,XBAP 仍然可以使用大部分的 WPF 功能,包括二维和三维图形、动画、屏幕文档、图像、视频等。

问题

WPF中,WinForm究竟是否能完全能取代WebForm?如果说原有的Winform属于胖客户,那最终可以取代WebFormWinform到底属于胖客户还是瘦客户?

WPF之中,本身就有分为WindowsBrowser两种应用程序,另外再加上真正在Web上运行的WPF/E,故它其实是同时具备三种型态能力的. 然而虽然微软对WPF期望很大,但毕竟不能不面对现实,ASP.NET的人口更大,传统HTML仍主宰着现在及未来的网络世界,您可以反问自己一个问题,Flash出来后,为什么HTML没有消失?故同理可证,WPF出来后,ASP.NET不会消失,且下一版本的ASP.NET已在设计中,会随着Visual Studio 2008一并推出,最终会形成WPFASP.NET各占一片天的两大势力。

1.2应用程序生命周期

<shape id="_x0000_i1028" style="WIDTH: 396pt; HEIGHT: 335.25pt" alt="独立应用程序 – 应用程序对象事件" type="#_x0000_t75"><imagedata o:href="http://technet.microsoft.com/zh-cn/ms743714.ApplicationModelOverview_ApplicationObjectEvents(zh-cn,VS.90).png" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image007.png"></imagedata></shape>

<shape id="_x0000_i1029" style="WIDTH: 396pt; HEIGHT: 230.25pt" alt="XBAP – 应用程序对象事件" type="#_x0000_t75"><imagedata o:href="http://technet.microsoft.com/zh-cn/ms743714.ApplicationModelOverview_ApplicationObjectEvents_xbap(zh-cn,VS.90).png" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image009.png"></imagedata></shape>

App.xaml

<Application x:Class="WpfApplication_LifeCyclew.App"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Startup="Application_Startup"

Activated="Application_Activated"

Deactivated="Application_Deactivated"

Exit="Application_Exit"

DispatcherUnhandledException="Application_DispatcherUnhandledException"

SessionEnding="Application_SessionEnding"

>

<Application.Resources>

</Application.Resources>

</Application>

App.xaml.cs

public partial class App : Application

{

bool isApplicationActive;

/// <summary>

/// StartupUri="Window1.xaml"

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void Application_Startup(object sender, StartupEventArgs e)

{

Window2 win = new Window2();

win.Show();

}

private void Application_Activated(object sender, EventArgs e)

{

this.isApplicationActive = true;

}

private void Application_Deactivated(object sender, EventArgs e)

{

this.isApplicationActive = false;

}

private void Application_Exit(object sender, ExitEventArgs e)

{

Application.Current.Shutdown(-1);

}

private void Application_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)

{

MessageBox.Show(e.Exception.Message);

}

private void Application_SessionEnding(object sender, SessionEndingCancelEventArgs e)

{

string msg = string.Format("{0}. End session?", e.ReasonSessionEnding);

e.Cancel = true;

}

private void Application_Exit(object sender, ExitEventArgs e)

{

Application.Current.Shutdown(-1);

}

}

1.3两种WPF程序

<shape id="_x0000_i1030" style="WIDTH: 414.75pt; HEIGHT: 256.5pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image011.png" o:title=""><font size="5"></font></imagedata></shape>

<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span style="mso-bookmark: _Toc200332915"><span lang="EN-US">1.3.1</span></span></chsdate> WPF应用程序

<Window x:Class="WpfApplication1.Window1"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Window1" Height="300" Width="300">

<Grid>

<Button Height="23" Margin="96,74,108,0" Name="button1" VerticalAlignment="Top" Click="button1_Click">ClickButton</Button>

</Grid>

</Window>

/// <summary>

/// Window1.xaml 的交互逻辑

/// </summary>

public partial class Window1 : Window

{

public Window1()

{

InitializeComponent();

}

private void button1_Click(object sender, RoutedEventArgs e)

{

MessageBox.Show("成功点击按钮!");

}

}

<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span style="mso-bookmark: _Toc200332916"><span lang="EN-US">1.3.2</span></span></chsdate> WPF浏览器应用程序

<Page x:Class="WpfBrowserApplication1.Page1"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Page1">

<Grid>

<Button Height="23" Margin="96,74,108,0" Name="button1" VerticalAlignment="Top" Click="button1_Click">ClickButton</Button>

</Grid>

</Page>

/// <summary>

/// Page1.xaml 的交互逻辑

/// </summary>

public partial class Page1 : Page

{

public Page1()

{

InitializeComponent();

}

private void button1_Click(object sender, RoutedEventArgs e)

{

MessageBox.Show("成功点击按钮!");

}

}

<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span style="mso-bookmark: _Toc200332917"><span lang="EN-US">1.3.3</span></span></chsdate> 程序区别

1. Window / Page

2. 项目部署区别

<shape id="_x0000_i1031" style="WIDTH: 414.75pt; HEIGHT: 91.5pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image013.png" o:title=""></imagedata></shape>

3. 安全限制

在因特网区域,wpf的不安全特性:

1) 访问本地文件系统;

2) 访问注册表;

3) 与非托管代码进行交互;

4) 启动新的窗口。

下图演示了区域、权限集、权限和资源之间的关系。

<shape id="_x0000_i1032" style="WIDTH: 333.75pt; HEIGHT: 326.25pt" alt="CAS 权限集" type="#_x0000_t75"><imagedata o:href="http://msdn.microsoft.com/zh-cn/library/ms743612.CASPermissionSets(zh-cn,VS.90).png" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image015.gif"></imagedata></shape>

在浏览器中打开新窗口的错误界面:

<shape id="_x0000_i1033" style="WIDTH: 414.75pt; HEIGHT: 259.5pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image016.png" o:title=""></imagedata></shape>

解决方案:

数字签名,部署到GAC

<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span style="mso-bookmark: _Toc200332918"><span lang="EN-US">1.3.4</span></span></chsdate> 通用开发方式

创建同一个库,既可使用于WinApp程序,又可作为Web程序加载于浏览器中。注意,要在运行时检测状态,IsBrowserHosted属性判断。

1.4小心ClickOnce缓存

ClickOnce部署,基于应用程序版本号。

Mage –cc 清除所有仅联机应用程序的已下载应用程序缓存。

1.5 按需下载文件

1.6 DeepZoom技术

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Loose XAML PhotoGallery">

<Page.Resources>

<ScaleTransform x:Key="transform" ScaleX="3" ScaleY="{Binding Path=ScaleX, RelativeSource={RelativeSource Self}}"/>

<LinearGradientBrush x:Key="shinyBrush" StartPoint="0,0" EndPoint="0,1">

<GradientStop Offset="0" Color="Gray"/>

<GradientStop Offset="0.3" Color="#FF222222"/>

styl

分享到:
评论

相关推荐

    软件开发部开发实习生毕业实习报告.doc

    通过三个月的实习,我掌握了 .NET 开发的技术,熟悉了 wPF 编程和 VV 模式,了解了环境医疗系统的界面重构等技术。同时,我也了解了项目的需求调研和需求分析、项目相关代码和文档的整理归档工作等内容。通过实习,...

    技术调查程序

    1. 数据收集:程序可能具备收集和存储技术数据的能力,例如硬件配置、软件版本信息、网络状态等,这些信息对于技术调查至关重要。 2. 分析工具:应用可能包含各种分析模块,比如性能分析、日志解析、错误检测等,...

    .net core 和 WPF 开发升讯威在线客服系统:调用百度翻译接口实现实时自动翻译.doc

    本文主要介绍了如何使用.NET Core和WPF技术开发一个具备实时自动翻译功能的在线客服系统,该系统利用了百度翻译API,旨在满足外贸行业的客户需求,实现客服与访客之间的无障碍沟通。 首先,系统开发者在2021年下...

    问卷调查系统(c#)

    【问卷调查系统(c#)】是一个基于C#编程语言开发的应用程序,主要目标是实现一个功能完善的在线问卷调查平台。这个系统集成了问卷的创建、题目设计以及选项设定等功能,能够满足用户进行数据收集和分析的需求。在...

    WPF自定义可视化间奏2:绑定

    描述中的“(另一个)WPF绑定的调查”暗示了这个主题将深入到绑定的不同方面,可能包括以下内容: 1. **数据源**:WPF支持多种类型的数据源,如.NET对象、XML数据、数据库等。`DataContext`属性是绑定的核心,设置...

    vb.net聊天通信软件开发(设计说明书+源代码+调研报告+项目PPT).zip

    1. 用户界面:使用WinForms或WPF创建图形用户界面,如登录窗口、主聊天窗口等,使用控件如TextBox、Button、ListBox等构建界面元素。 2. 网络通信:利用System.Net命名空间中的Socket类进行TCP/IP通信,实现数据的...

    xh_netvote.rar_.net问卷_调查_调查问卷_问卷_问卷调查

    它包括C#、VB.NET、F#等编程语言,以及ASP.NET、WPF(Windows Presentation Foundation)和Windows Forms等开发技术。 2. **问卷设计**: 设计有效的调查问卷需要考虑问题的类型(开放式、封闭式)、问题的顺序、...

    IT行业技术管培生简历模板(突出专业技能).doc

    * NET 软件开发工程师:高级程序员,熟练应用 c#, asp.net, javascript, silverlight, web service, wpf, sql server, oracle10g 等技术 * 熟悉 lumix, unix 系统,eclipse 平台 二、项目经验 * 应用 ASP.NET 开发...

    基于C-的家政服务管理系统.doc

    1.前端:使用C#语言和Windows Forms或WPF开发前端应用程序。 2.后台:使用C#语言和ADO.NET开发后台数据库访问层。 3.数据库:使用SQL Server或其他关系数据库管理系统。 五、系统实现 该系统的实现主要包括后台...

    c#调查系统及打包程序

    C#调查系统通常会使用Windows Forms或Windows Presentation Foundation(WPF)来构建用户界面。Windows Forms提供了一种简单的方式创建桌面应用程序,而WPF则提供了更丰富的用户体验,包括数据绑定、模板和动画。...

    2008中国软件开发者大调查摘要

    - **最关心的.NET平台新技术**:如WPF、LINQ等。 - **对.NET技术体系的总体满意度**:整体满意度较高。 - **最满意的地方**:强大的生态系统支持。 - **最不满意的方面**:跨平台能力有限。 - **最适合的领域**...

    数据库(2).docx

    - 通过Web前端技术(HTML/CSS/JavaScript)或桌面应用程序框架(如Swing、WPF)构建直观易用的用户界面。 通过以上几个方面的深入学习和实践,不仅可以全面掌握数据库设计与开发的相关知识,还能锻炼自己的综合...

    C#编写的自由投票调查系统

    5. **安全性**:投票调查系统需要保护用户隐私,因此可能使用加密技术、身份验证和授权机制来确保数据安全。 6. **用户界面设计**:良好的用户体验是此类系统的关键。设计可能包括易于理解的按钮、选项和反馈机制,...

    计算机专业毕业设计参考题目.docx

    1. ASP.NET 类: - 基于ASP.NET的在线购物系统设计与实现 - 使用MVC架构开发企业级网站 - ASP.NET动态数据驱动的新闻发布系统 - 采用Web API构建RESTful服务 - 安全性增强的ASP.NET用户身份验证和授权系统 2. ...

    设计思考11011

    WPF是微软推出的用于构建Windows桌面应用程序的技术,它提供了丰富的UI设计工具和强大的数据绑定功能。在这个项目中,你需要创建一个WPF的定位模拟器,这意味着我们需要构建一个模拟真实地理位置信息的应用程序,...

    net软件开发信息资料大全

    - 发布于2005年,引入了许多新特性,如LINQ、WPF和WF等。 - **.NET 4.0和.NET Framework 4.0** - 发布于2010年,进一步增强了并行计算能力,并提供了新的编程模型如Task Parallel Library (TPL)。 #### 二、.NET...

    c# 亚健康专家诊断系统

    1. 数据收集与处理:系统通过问卷调查、传感器数据等方式获取用户信息。C#支持丰富的数据类型和数据结构,如字符串、数组、列表等,可以方便地处理各种数据。 2. 决策树与算法:诊断系统的核心在于根据用户数据进行...

    windows编程---项目建立和界面设计

    在“QuestionnaireSystem”这个项目中,可能涉及到创建一个问卷调查系统,包括设计问卷编辑界面、展示问题的界面、用户提交答案的界面等。开发者可能需要使用数据绑定技术将界面控件与后台数据模型关联,以实现数据...

Global site tag (gtag.js) - Google Analytics