图形和多媒体

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 画笔和绘制元素的区别。

有关详细信息,请参阅 WPF 画笔概述。 如果想了解介绍性示例,请参阅 画笔示例

3D 渲染

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

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

有关详细信息,请参阅 3D 图形概述。 有关介绍性示例,请参阅 3D Solids 示例

动画

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

动画立方体的屏幕截图。

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

媒体

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

映像

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

样式示例屏幕截图

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

视频和音频

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

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

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

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

另请参阅