Windows Presentation Foundation (WPF) 为多媒体、矢量图形、动画和内容合成提供支持,使开发人员可以轻松构建有趣的用户界面和内容。 使用 Visual Studio,可以创建矢量图形或复杂动画,并将媒体集成到应用程序中。
本主题介绍 WPF 的图形、动画和媒体功能,使你可以向应用程序添加图形、切换效果、声音和视频。
注释
强烈建议不要在 Windows 服务中使用 WPF 类型。 如果尝试在 Windows 服务中使用 WPF 类型,该服务可能无法按预期工作。
WPF 4 中图形和多媒体的新增功能
已对图形和动画进行了多项更改。
布局舍入
当对象边缘位于像素设备中间时,与 DPI 无关的图形系统可以创建呈现项目,例如模糊或半透明边缘。 早期版本的 WPF 包括像素对齐功能来帮助处理这种情况。 Silverlight 2 引入了布局舍入,这是移动元素的另一种方法,以便边缘落在整个像素边界上。 WPF 现在支持布局舍入,并通过在FrameworkElement上使用UseLayoutRounding附加属性来实现。
缓存合成
通过使用新 BitmapCache 类和 BitmapCacheBrush 类,可以将可视化树的复杂部分缓存为位图,并极大地缩短呈现时间。 位图仍对用户输入(如鼠标单击)保持响应,你可以像任何画笔一样将其绘制到其他元素上。
像素着色器 3 支持
WPF 4 基于在 WPF 3.5 SP1 中引入的支持,允许应用程序使用像素着色器(PS)版本 3.0 编写图像效果。 PS 3.0 着色器模型比 PS 2.0 更复杂,这允许对支持的硬件产生更大的影响。
缓动函数
可以使用缓动函数增强动画,从而进一步控制动画的行为。 例如,可以向动画应用ElasticEase以赋予动画弹性效果。 有关详细信息,请参阅命名空间中的 System.Windows.Media.Animation 缓动类型。
图形和渲染
WPF 包括对高质量 2D 图形的支持。 此功能包括画笔、几何图形、图像、形状和转换。 有关详细信息,请参阅 图形。 图形元素的呈现基于类 Visual 。 可视化树描述了屏幕上的视觉对象结构。 有关详细信息,请参阅 WPF 图形呈现概述。
2D 形状
WPF 提供了一个常用矢量绘制的二维形状(如矩形和省略号)的库,下图所示。
这些内部 WPF 形状不仅仅是形状:它们是实现你期望从最常见的控件(包括键盘和鼠标输入)实现的许多功能的可编程元素。 以下示例演示如何通过单击Ellipse元素来处理MouseUp引发的事件。
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Window1" >
<Ellipse Fill="LightBlue" MouseUp="ellipseButton_MouseUp" />
</Window>
public partial class Window1 : Window
{
void ellipseButton_MouseUp(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("You clicked the ellipse!");
}
}
Partial Public Class Window1
Inherits Window
Private Sub ellipseButton_MouseUp(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
MessageBox.Show("You clicked the ellipse!")
End Sub
End Class
下图显示了上述 XAML 标记和后台代码的输出。
有关详细信息,请参阅 WPF 概述中的形状和基本绘图。 有关介绍性示例,请参阅 Shape Elements 示例。
2D 几何图形
当 WPF 提供的 2D 形状不够时,可以使用 WPF 对几何图形和路径的支持来创建自己的形状。 下图显示了如何使用几何图形创建形状、作为绘图画笔以及剪辑其他 WPF 元素。
有关详细信息,请参阅 Geometry 概述。 有关介绍性示例,请参阅 Geometries 示例。
2D 效果
WPF 提供了一个 2D 类库,可用于创建各种效果。 WPF 的 2D 渲染能力提供了绘制具有渐变、位图、绘图和视频的 UI 元素的功能;并可通过旋转、缩放和倾斜对其进行操作。 下图提供了通过使用 WPF 画笔可以实现的许多效果的示例。
有关详细信息,请参阅 WPF 画笔概述。 如果想了解介绍性示例,请参阅 画笔示例。
3D 渲染
WPF 提供了一组 3D 渲染功能,这些功能与 WPF 中的 2D 图形支持集成,以便创建更令人兴奋的布局、UI 和数据可视化效果。 在光谱的一端,WPF 使你能够将二维图像呈现到三维形状的图面上,下图演示了这一点。
有关详细信息,请参阅 3D 图形概述。 有关介绍性示例,请参阅 3D Solids 示例。
动画
使用动画使控件和元素增长、摇动、旋转和淡化;以及创建有趣的页面切换等。 由于 WPF 使你能够对大多数属性进行动画处理,因此不仅可以对大多数 WPF 对象进行动画处理,还可以使用 WPF 对创建的自定义对象进行动画处理。
有关详细信息,请参阅 动画概述。 有关介绍性示例,请参阅 动画示例库。
媒体
图像、视频和音频是传达信息和用户体验的丰富媒体方式。
映像
图像(包括图标、背景,甚至动画的一部分)是大多数应用程序的核心部分。 由于经常需要使用图像,WPF 会以多种方式公开使用它们的能力。 下图仅显示了其中一种方法。
有关详细信息,请参阅 映像概述。
视频和音频
WPF 图形功能的核心功能是为使用多媒体(包括视频和音频)提供本机支持。 以下示例演示如何将媒体播放器插入应用程序。
<MediaElement Source="media\numbers.wmv" Width="450" Height="250" />
MediaElement 能够同时播放视频和音频,并且可扩展,以便轻松创建自定义 UI。
有关详细信息,请参阅 多媒体概述。