图形和多媒体

更新:2010 年 12 月

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

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

注意注意

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

本主题包括下列各节。

  • WPF 4 在图形和多媒体方面的新增功能
  • 图形和呈现
  • 三维呈现
  • 动画
  • 媒体
  • 相关主题

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 包括对高质量的二维图形的支持。 功能包括画笔、几何图形、图像、形状和转换。 有关更多信息,请参见图形。 图形元素的呈现基于 Visual 类。 屏幕上的可视化对象的结构通过可视化树进行描述。 有关更多信息,请参见 WPF 图形呈现疑难解答

二维形状

WPF 提供了一个库,包含用矢量绘制的常用 2-D 形状,如下图中演示的矩形和椭圆。

椭圆和矩形

这些内部的 WPF 形状不仅仅是形状:它们是可编程的元素,能够实现可通过最常见的控件(包括键盘输入和鼠标输入)实现的许多功能。 下面的示例演示如何处理单击 Ellipse 元素引起的 MouseUp 事件。

<Window
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://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 Sample(形状元素示例)。

二维几何图形

当 WPF 提供的 2-D 形状不足时,可以使用 WPF 中的几何图形和路径支持来创建自己的形状。 下面的插图显示如何使用几何图形来创建形状、如何将几何图形用作绘图画笔以及如何使用几何图形来剪裁其他 WPF 元素。

Path 的各种用法

有关更多信息,请参见Geometry 概述。 有关介绍性示例,请参见 Geometries Sample(几何图形示例)。

二维效果

WPF 提供了一个包含 2-D 类的库,可用来创建各种效果。 使用 WPF 的2-D呈现功能,可以绘制具有渐变、位图、绘图和视频的 UI 元素,并借助于旋转、缩放和扭曲功能来操作这些元素。 下图举例说明通过 WPF 画笔可获得的多种效果。

不同画笔的图示

有关更多信息,请参见 WPF 画笔概述。 有关介绍性示例,请参见 Brushes Sample(画笔示例)。

三维呈现

WPF 提供了一组3-D呈现功能,这些功能可与 WPF 中的2-D图形支持功能集成,以便您创建更加令人惊喜的布局、UI 和数据可视化效果。 在色谱的一端,WPF 允许您将 2-D 图像呈现到 3-D 形状的一个图面上,如下图中所示。

Visual3D 示例屏幕快照

有关更多信息,请参见三维图形概述。 有关介绍性示例,请参见 3-D Solids Sample(三维实体示例)。

动画

使用动画,可以使控件和元素变大、晃动、旋转和淡化,还可以产生有趣的页面过渡和更多效果。 由于 WPF 允许您对大多数属性进行动画处理,因此,您不但可以对大多数 WPF 对象进行动画处理,而且还可以使用 WPF 来对您创建的自定义对象进行动画处理。

具有动画效果的立方体图

有关更多信息,请参见动画概述。 有关介绍性示例,请参见 Animation Example Gallery(动画示例库)。

媒体

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

图像

图像(包括图标、背景甚至动画的一部分)是大多数应用程序的核心部分。 由于您经常需要使用图像,因此 WPF 提供了以各种方式处理图像的功能。 下图只说明了其中的一种方法。

样式示例屏幕快照

有关更多信息,请参见图像处理概述

视频和音频

WPF 的一个核心图形功能就是为处理多媒体(包括视频和音频)提供本机支持。 下面的示例说明如何在应用程序中插入媒体播放器。

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

MediaElement 既能够播放视频又能够播放音频,而且具有很好的可扩展性,可以用来方便地创建自定义的 UIs。

有关更多信息,请参见 多媒体概述

请参见

参考

System.Windows.Media

System.Windows.Media.Animation

System.Windows.Media.Media3D

概念

优化性能:二维图形和图像处理

WPF 中的形状和基本绘图概述

使用纯色和渐变进行绘制概述

使用图像、绘图和 Visual 进行绘制

其他资源

动画和计时

三维图形

多媒体

修订记录

日期

修订记录

原因

2010 年 12 月

添加了缺少的 Visual Basic 示例。

内容 Bug 修复