WPF中的3D特性的信息
Storyboard类继承自基类Timeline,但可以包含几个时间线。Storyboard类可以用于控制时间线。表35-6描述了Storyboard类的方法。
Storyboard类的方法 说 明
Begin() Begin()方法启动与情节板关联的动画
BeginAnimation() BeginAnimation()方法可以为一个依赖属性启动单个动画
CreateClock() CreateClock()方法返回一个Clock对象,用于控制动画
Pause(),Resume() 美国服务器租用商提醒您使用Pause()和Resume()可以暂停、恢复动画的播放
Seek() 使用Seek()方法,可以使动画移动到指定的时间处
Stop() Stop()方法挂起时钟,停止动画
EventTrigger类可以定义事件发生时的操作。表35-7描述了这个类的属性。
EventTrigger类的属性 说 明
RoutedEvent 使用RoutedEvent属性,可以定义在触发器开始时的事件,例如按钮的Click事件
SourceName SourceName属性确定事件应连接到哪个WPF元素上
可以放在EventTrigger中的触发器动作如表35-8所示。在前面的例子中,使用了BeginStoryboard和StopStoryboard动作,表35-8列出了其他动作。
TriggerAction类 说 明
SoundPlayerAction 使用SoundPlayerAction,可以播放.wav文件
BeginStoryboard BeginStoryboard启动由Storyboard定义的动画
PauseStoryboard PauseStoryboard暂停动画
ResumeStoryboard ResumeStoryboard重新启动暂停的动画
StopStoryboard StopStoryboard停止运行的动画
SeekStoryboard SeekStoryboard可以改变动画的当前时间
SkipStoryboardToFill SkipStoryboardToFill使动画向前移动到结束时间
SetStoryboardSpeedRatio SetStoryboardSpeedRatio可以改变动画的播放速度
35.4 在WPF中添加3D特性
本节香港服务器租用商介绍WPF中的3D特性,其中包含了开始使用该特性的信息。
提示:
WPF中的3D特性在System.Windows.Media.Media3D命名空间中。
为了理解WPF中的3D特性,一定要知道坐标系统之间的区别。图35-22显示了WPF 3D中的坐标系统。
原点位于中心。X轴的正值在右边,负值在左边。Y轴是垂直的,正值在上边,负值在下边。Z轴在指向观察者的方向上定义了正值。
表35-9国外服务器租用商描述了最重要的类及其功能。
类 说 明
ViewPort3D ViewPort3D定义了3D对象的渲染表面。这个元素包含3D绘图的所有可见元素
ModelVisual3D ModelVisual3D包含在ViewPort3D中,它包含了所有可见元素。可以给完整的模型指定变换
GeometryModel3D GeometryModel3D包含在ModelVisual3D中,它包含网格和材质
Geometry3D Geometry3D是一个抽象基类,定义了几何形状。派生于Geometry3D的类是MeshGeometry3D。
使用MeshGeometry3D可以定义三角形的位置,建立3D模型
Material Material是一个抽象基类,定义了MeshGeometry3D指定的三角形的前边和后边。Material包
含在GeometryModel3D中。.NET 3.5定义了几个材质类,例如DiffuseMaterial、EmissiveMaterial和SpecularMaterial。
根据材质的类型,以不同的方式计算灯光。EmissiveMaterial利用灯光的计算,使材质发出等于笔刷颜色的光。
DiffuseMaterial使用漫射光,SpecularMaterial定义了镜面发光模型。使用MaterialGroup类可以创建由其他材质合并而成的材质
Light Light是灯光的抽象基类。其派生类有AmbientLight、DirectionalLight、PointLight和SpotLight。
AmbientLight是不自然的光,会近似照亮整个场景。使用这种光看不到边界。DirectionalLight定义了定向光。
太阳光就是一种定向光,光线来自一边,此时可以看到边界和阴影。PointLight是一种位于指定位置的光,
会照亮所有的方向。SpotLight照亮指定的方向。这个光定义了一个圆锥,会得到一个发出光亮的区域
Camera Camera是摄像机的抽象基类,用于把3D场景映射为2D显示。其派生类是PerspectiveCamera、OrthographicCamera和
MatrixCamera。在PerspectiveCamera中,3D对象离得越远就越小,这不同于OrthographicCamera,在Orthographic Camera中,
摄像机的距离对对象的大小没有影响。在MatrixCamera中,可以在矩阵中定义视图和变换
Transform3D Transform3D是3D变换的抽象基类。美国服务器租用商提醒您其派生类是RotateTransform3D、ScaleTransform3D、
TranslateTransform3D、MatrixTransform3D和Transform3D Group。TranslateTransform3D允许在x、y和z向上变换对象,
ScaleTransform3D可以重置对象的大小。RotateTransform3D可以在x、y和z向上把对象旋转指定的角度。
Transform3DGroup可以合并其他变换效果三角形
本节从一个简单的3D示例开始。3D模型由三角形组成,所以最简单的模型是一个三角形。三角
形用MeshGeometry3D的Positions属性定义。3个顶点都使用相同的z坐标-4,x、y坐标分别为-1-1、1-1和01。
属性TriangleIndices指定了逆时针的位置顺序。使用这个属性可以确定三角形的哪一边是可见的。
三角形的一边显示了用GeometryModel3D类的Meterial属性定义的颜色,其他边显示了BackMeterial属性定义的颜色。
用于显示场景的摄像机位于坐标0,0,0,其方向指向0,0,-8。把摄像机的位置改变到左边,
矩形就移动到右边,反之亦然。改变摄像机的y位置,矩形就会变大或变小。
这个场景中使用的光线是AmbientLight,它用白色光照亮了整个场景。
Storyboard类的方法 说 明
Begin() Begin()方法启动与情节板关联的动画
BeginAnimation() BeginAnimation()方法可以为一个依赖属性启动单个动画
CreateClock() CreateClock()方法返回一个Clock对象,用于控制动画
Pause(),Resume() 美国服务器租用商提醒您使用Pause()和Resume()可以暂停、恢复动画的播放
Seek() 使用Seek()方法,可以使动画移动到指定的时间处
Stop() Stop()方法挂起时钟,停止动画
EventTrigger类可以定义事件发生时的操作。表35-7描述了这个类的属性。
EventTrigger类的属性 说 明
RoutedEvent 使用RoutedEvent属性,可以定义在触发器开始时的事件,例如按钮的Click事件
SourceName SourceName属性确定事件应连接到哪个WPF元素上
可以放在EventTrigger中的触发器动作如表35-8所示。在前面的例子中,使用了BeginStoryboard和StopStoryboard动作,表35-8列出了其他动作。
TriggerAction类 说 明
SoundPlayerAction 使用SoundPlayerAction,可以播放.wav文件
BeginStoryboard BeginStoryboard启动由Storyboard定义的动画
PauseStoryboard PauseStoryboard暂停动画
ResumeStoryboard ResumeStoryboard重新启动暂停的动画
StopStoryboard StopStoryboard停止运行的动画
SeekStoryboard SeekStoryboard可以改变动画的当前时间
SkipStoryboardToFill SkipStoryboardToFill使动画向前移动到结束时间
SetStoryboardSpeedRatio SetStoryboardSpeedRatio可以改变动画的播放速度
35.4 在WPF中添加3D特性
本节香港服务器租用商介绍WPF中的3D特性,其中包含了开始使用该特性的信息。
提示:
WPF中的3D特性在System.Windows.Media.Media3D命名空间中。
为了理解WPF中的3D特性,一定要知道坐标系统之间的区别。图35-22显示了WPF 3D中的坐标系统。
原点位于中心。X轴的正值在右边,负值在左边。Y轴是垂直的,正值在上边,负值在下边。Z轴在指向观察者的方向上定义了正值。
表35-9国外服务器租用商描述了最重要的类及其功能。
类 说 明
ViewPort3D ViewPort3D定义了3D对象的渲染表面。这个元素包含3D绘图的所有可见元素
ModelVisual3D ModelVisual3D包含在ViewPort3D中,它包含了所有可见元素。可以给完整的模型指定变换
GeometryModel3D GeometryModel3D包含在ModelVisual3D中,它包含网格和材质
Geometry3D Geometry3D是一个抽象基类,定义了几何形状。派生于Geometry3D的类是MeshGeometry3D。
使用MeshGeometry3D可以定义三角形的位置,建立3D模型
Material Material是一个抽象基类,定义了MeshGeometry3D指定的三角形的前边和后边。Material包
含在GeometryModel3D中。.NET 3.5定义了几个材质类,例如DiffuseMaterial、EmissiveMaterial和SpecularMaterial。
根据材质的类型,以不同的方式计算灯光。EmissiveMaterial利用灯光的计算,使材质发出等于笔刷颜色的光。
DiffuseMaterial使用漫射光,SpecularMaterial定义了镜面发光模型。使用MaterialGroup类可以创建由其他材质合并而成的材质
Light Light是灯光的抽象基类。其派生类有AmbientLight、DirectionalLight、PointLight和SpotLight。
AmbientLight是不自然的光,会近似照亮整个场景。使用这种光看不到边界。DirectionalLight定义了定向光。
太阳光就是一种定向光,光线来自一边,此时可以看到边界和阴影。PointLight是一种位于指定位置的光,
会照亮所有的方向。SpotLight照亮指定的方向。这个光定义了一个圆锥,会得到一个发出光亮的区域
Camera Camera是摄像机的抽象基类,用于把3D场景映射为2D显示。其派生类是PerspectiveCamera、OrthographicCamera和
MatrixCamera。在PerspectiveCamera中,3D对象离得越远就越小,这不同于OrthographicCamera,在Orthographic Camera中,
摄像机的距离对对象的大小没有影响。在MatrixCamera中,可以在矩阵中定义视图和变换
Transform3D Transform3D是3D变换的抽象基类。美国服务器租用商提醒您其派生类是RotateTransform3D、ScaleTransform3D、
TranslateTransform3D、MatrixTransform3D和Transform3D Group。TranslateTransform3D允许在x、y和z向上变换对象,
ScaleTransform3D可以重置对象的大小。RotateTransform3D可以在x、y和z向上把对象旋转指定的角度。
Transform3DGroup可以合并其他变换效果三角形
本节从一个简单的3D示例开始。3D模型由三角形组成,所以最简单的模型是一个三角形。三角
形用MeshGeometry3D的Positions属性定义。3个顶点都使用相同的z坐标-4,x、y坐标分别为-1-1、1-1和01。
属性TriangleIndices指定了逆时针的位置顺序。使用这个属性可以确定三角形的哪一边是可见的。
三角形的一边显示了用GeometryModel3D类的Meterial属性定义的颜色,其他边显示了BackMeterial属性定义的颜色。
用于显示场景的摄像机位于坐标0,0,0,其方向指向0,0,-8。把摄像机的位置改变到左边,
矩形就移动到右边,反之亦然。改变摄像机的y位置,矩形就会变大或变小。
这个场景中使用的光线是AmbientLight,它用白色光照亮了整个场景。
浙公网安备 33010602011771号