《Programming WPF》翻译 第7章 6.视频和3-D
原文:《Programming WPF》翻译 第7章 6.视频和3-D
虽然详细地讨论视频和3-D超越了这本书的范围,但是获得这些特征的支持是值得的。
视频由MediaElement类型支持。这个元素可以被添加到UI树的任何地方。简单的设置它的Source属性以关联到它要播放的视频流,如示例7-49所示。
示例7-49
 <MediaElement Source="C:\WINDOWS\system32\oobe\images\intro.wmv" Stretch="Fill" />
<MediaElement Source="C:\WINDOWS\system32\oobe\images\intro.wmv" Stretch="Fill" />3-D内容通过Viewport3D支持。直到WPF的外观系统被关联,Viewport3D只是一个正规的控件,同时它可以被设定大小和定位,像其它控件那样。然而,你提供了这样的控件,带有3-D模型、发光、照相机位置信息。它会生成这个模型。这个控件担当了一个3-D屏幕上的窗体,正如示例7-50所示。
示例7-50
 <Viewport3D ClipToBounds="true">
<Viewport3D ClipToBounds="true"> <Viewport3D.Camera>
    <Viewport3D.Camera> <PerspectiveCamera NearPlaneDistance="1" FarPlaneDistance="100"
        <PerspectiveCamera NearPlaneDistance="1" FarPlaneDistance="100" LookAtPoint="0,0,0" Position="30, -2, 20" Up="0, 0, 1"
                           LookAtPoint="0,0,0" Position="30, -2, 20" Up="0, 0, 1" FieldOfView="45" />
                           FieldOfView="45" /> </Viewport3D.Camera>
    </Viewport3D.Camera>
 <Viewport3D.Models>
    <Viewport3D.Models> <Model3DGroup>
        <Model3DGroup> <DirectionalLight Color="#FFFFFFFF" Direction="10,25,-1" />
            <DirectionalLight Color="#FFFFFFFF" Direction="10,25,-1" /> <AmbientLight Color="#66666666" />
            <AmbientLight Color="#66666666" />
 <GeometryModel3D>
            <GeometryModel3D> <GeometryModel3D.Geometry>
                <GeometryModel3D.Geometry> <MeshGeometry3D
                    <MeshGeometry3D TriangleIndices="0 1 2  1 2 3  2 3 0  0 1 3"
                        TriangleIndices="0 1 2  1 2 3  2 3 0  0 1 3" Normals="-1,-1,0 1,-1,0 1,0,0 0,0,1"
                        Normals="-1,-1,0 1,-1,0 1,0,0 0,0,1" Positions="-2,-2,-2  2,-2,-2  0,2,-2  0,0,1"/>
                        Positions="-2,-2,-2  2,-2,-2  0,2,-2  0,0,1"/> </GeometryModel3D.Geometry>
                </GeometryModel3D.Geometry> <GeometryModel3D.Material>
                <GeometryModel3D.Material> <MaterialGroup>
                    <MaterialGroup> <DiffuseMaterial Brush="LightGreen" />
                        <DiffuseMaterial Brush="LightGreen" /> <SpecularMaterial Brush="White" />
                        <SpecularMaterial Brush="White" /> </MaterialGroup>
                    </MaterialGroup> </GeometryModel3D.Material>
                </GeometryModel3D.Material> </GeometryModel3D >
            </GeometryModel3D > </Model3DGroup>
        </Model3DGroup> </Viewport3D.Models>
    </Viewport3D.Models> </Viewport3D>
</Viewport3D>这就建立了一个非常简单的3-D模型,包含了一个单独的基于正方形的锥形。图7-58显示了结果。这个模型还包含了一些光源来保证模型是可见的。这个Viewport还有一个详细指出的照相机位置。
图7-58

实际上,你可以正常的使用任意类型的3-D设计工具模型,因此你不能典型地希望和模型标记一起工作,如示例7-50所示。Viewport3D仅提供了一个便利的方法,将结果集成到你的可视化树中。
《Programming WPF》翻译 第7章 6.视频和3-D的更多相关文章
- 《Programming WPF》翻译 第7章 7.我们进行到哪里了?
		原文:<Programming WPF>翻译 第7章 7.我们进行到哪里了? WPF提供了一个范围的高质量生成和合成服务.一组形状元素支持各种的绘图基础.一些笔刷类型是可利用的,对于决定如 ... 
- 《Programming WPF》翻译 第7章 3.笔刷和钢笔
		原文:<Programming WPF>翻译 第7章 3.笔刷和钢笔 为了在屏幕上绘制一个图形,WPF需要知道你想要为图形填充什么颜色以及如何绘制它的边框.WPF提供了一些Brush类型支 ... 
- 《Programming WPF》翻译 第6章 3.二进制资源
		原文:<Programming WPF>翻译 第6章 3.二进制资源 尽管ResourceDictionary和系统级别的资源适合于作为数据存在于对象中,然而,并不是所有的资源都能很好的满 ... 
- 《Programming WPF》翻译 第9章 5.默认可视化
		原文:<Programming WPF>翻译 第9章 5.默认可视化 虽然为控件提供一个自定义外观的能力是有用的,开发者应该能够使用一个控件而不用必须提供自定义可视化.这个控件应该正好工作 ... 
- 《Programming WPF》翻译 第9章 6.我们进行到哪里了?
		原文:<Programming WPF>翻译 第9章 6.我们进行到哪里了? 只有当任何内嵌控件都没有提供你需要的底层行为时,你将要写一个自定义控件.当你写一个自定义控件,你将要使用到依赖 ... 
- 《Programming WPF》翻译 第9章 4.模板
		原文:<Programming WPF>翻译 第9章 4.模板 对一个自定义元素最后的设计考虑是,它是如何连接其可视化的.如果一个元素直接从FrameworkElement中派生,这将会适 ... 
- 《Programming WPF》翻译 第9章 3.自定义功能
		原文:<Programming WPF>翻译 第9章 3.自定义功能 一旦你挑选好一个基类,你将要为你的控件设计一个API.大部分WPF元素提供属性暴露了多数功能,事件,命令,因为他们从框 ... 
- 《Programming WPF》翻译 第9章 2.选择一个基类
		原文:<Programming WPF>翻译 第9章 2.选择一个基类 WPF提供了很多类,当创建一个自定义元素时,你可以从这些类中派生.图9-1显示了一组可能作为类--可能是合适的基类, ... 
- 《Programming WPF》翻译 第9章 1.自定义控件基础
		原文:<Programming WPF>翻译 第9章 1.自定义控件基础 在写一个自定义控件之前,你需要问的第一个问题是,我真的需要一个自定义控件吗?一个写自定义控件的主要原因是为了用户界 ... 
随机推荐
- AIR检测网络
			package com.juyou.util.net { import flash.events.StatusEvent; import flash.net.URLRequest; import ai ... 
- 如何在 Android 手机上实现抓包?
			如何在 Android 手机上实现抓包? http://www.zhihu.com/question/20467503 我想知道某个应用究竟在数据提交到哪里,提交了什么.网上的教程太复杂,不想麻烦.有 ... 
- Hive2.0函数大全(中文版)
			摘要 Hive内部提供了很多函数给开发者使用,包括数学函数,类型转换函数,条件函数,字符函数,聚合函数,表生成函数等等,这些函数都统称为内置函数. 目录 数学函数 集合函数 类型转换函数 日期函数 条 ... 
- 使用markdown语法撰写csdn博客
			在CSDN之下写blog无疑是一件非常吃力的事情,对于非常多simple爱好者来讲,能用markdown语法来书写代码是最优雅简洁只是的了.本文主要介绍markdown语法和怎样它来撰写csdn下的b ... 
- JavaScript 滚动页面到指定元素位置
			页面评论功能,当评论较多时,有时须要滚动到评论头部. 能够使用scrollTop方法,加上一点延时动画(animate),可訪问在线演示,代码大体例如以下: <html> <scri ... 
- UVA 10198 Counting
			Counting The Problem Gustavo knows how to count, but he is now learning how write numbers. As he is ... 
- [置顶] ./build_native 时出现please define NDK_ROOT
			在一次帮朋友弄cygwin交叉编译时出现了这个问题 cygwin是按照成功了,make-v,以及gcc-v都没出现问题,就是在./build_native 时出现please define NDK_R ... 
- C/C++笔试准备(2)
			问题:编辑距离,是指将一个字符串变为另一个字符串,仅可以3种操作:修改一个字符,删除一个字符,插入一个字符.the变成that:删除e,插入a,插入t.20’ 实现编辑距离算法. 解算:利用动态规划的 ... 
- nignx日志格式
			web-master的nginx格式: log_format web_format '$remote_addr $remote_port $remote_user [$time_local] ' '& ... 
- EF执行存储过程(带输出参数)
			1.不含动态sql.带输出参数存储过程调用实例 1.存储过程代码: 2.EF自动生成代码(包括对应ObjectResult的实体模型): 3.调用存储过程代码实例: 总结: ObjectParam ... 
