图形和多媒体

Windows Presentation Foundation(WPF)为多媒体、矢量图形、动画和内容合成提供支持,使开发人员可以轻松生成有趣的用户界面和内容。 使用 Visual Studio,可以创建矢量图形或复杂动画,并将媒体集成到应用程序中。

本主题介绍 WPF 的图形、动画和媒体功能,使你可以向应用程序添加图形、切换效果、声音和视频。

说明

强烈建议不要在 Windows 服务中使用 WPF 类型。 如果尝试在 Windows 服务中使用 WPF 类型,该服务可能无法按预期工作。

WPF 4 中图形和多媒体的新增功能

已对图形和动画进行了多项更改。

  • 布局舍入

    当对象边缘位于像素设备中间时,与 DPI 无关的图形系统可以创建呈现项目,例如模糊或半透明边缘。 WPF 的以前版本包含像素捕捉以帮助处理这种情况。 Silverlight 2 引入了布局舍入,这是移动元素以使边缘落在整个像素边界上的另一种方法。 WPF 现在支持在 FrameworkElement 上使用 UseLayoutRounding 附加属性进行布局舍入。

  • 缓存复合

    通过使用新的 BitmapCacheBitmapCacheBrush 类,可以将可视化树的复杂部分缓存为位图,并极大地缩短呈现时间。 位图仍对用户输入(如鼠标单击)保持响应,你可以像任何画笔一样将其绘制到其他元素上。

  • 像素着色器 3 支持

    WPF 4 基于 WPF 3.5 SP1 中引入的 ShaderEffect 支持,允许应用程序使用像素着色器(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 中的形状和基本绘图概述。 有关介绍性示例,请参阅 形状元素示例

2D 几何图形

当 WPF 提供的 2D 形状不够时,可以使用 WPF 对几何图形和路径的支持来创建自己的形状。 下图显示了如何使用几何图形创建形状、作为绘图画笔以及剪辑其他 WPF 元素。

显示如何使用几何图形创建形状的屏幕截图。

有关详细信息,请参阅 Geometry Overview。 有关介绍性示例,请参阅 几何图形示例

2D 效果

WPF 提供了一个 2D 类库,可用于创建各种效果。 WPF 的 2D 呈现功能提供绘制具有渐变、位图、绘图和视频的 UI 元素的功能;并使用旋转、缩放和倾斜来操作它们。 下图提供了通过使用 WPF 画笔可以实现的许多效果的示例。

插图显示了不同的 WPF 画笔和绘图元素。

有关详细信息,请参阅 WPF 画笔概述。 有关详细信息,请参阅画笔示例

3D 渲染

WPF 提供了一组 3D 渲染功能,这些功能与 WPF 中的 2D 图形支持集成,以便创建更令人兴奋的布局、UI 和数据可视化效果。 在光谱的一端,WPF 使你能够将二维图像呈现到三维形状的图面上,下图演示了这一点。

显示具有不同纹理的 3D 形状的示例的屏幕截图。

有关详细信息,请参阅 3D 图形概述。 有关介绍性示例,请参阅 三维实心样本

动画

使用动画使控件和元素增长、摇动、旋转和淡化;以及创建有趣的页面切换等。 由于 WPF 使你能够对大多数属性进行动画处理,因此不仅可以对大多数 WPF 对象进行动画处理,还可以使用 WPF 对创建的自定义对象进行动画处理。

动画立方体的屏幕截图。

有关详细信息,请参阅 动画概述。 有关介绍性示例,请参阅 动画示例库

媒体

图像、视频和音频是传达信息和用户体验的丰富媒体方式。

图像

图像(包括图标、背景,甚至动画的一部分)是大多数应用程序的核心部分。 由于你经常需要使用图像,WPF 提供了多种方式来处理它们。 下图仅显示了其中一种方法。

样式示例屏幕截图

有关详细信息,请参阅 映像概述

视频和音频

WPF 提供的图形能力的核心特性是为使用多媒体(包括视频和音频)提供原生支持。 以下示例演示如何将媒体播放器插入应用程序。

<MediaElement Source="media\numbers.wmv" Width="450" Height="250" />

MediaElement 能够同时播放视频和音频,并且可扩展,以便轻松创建自定义 UI。

有关详细信息,请参阅 多媒体概述

另请参阅