在这个程序里对5个2D控件界面应用了垂直倒影,边缘模糊化和模型变换,在本例中,这5个2D控件为Border, 各包含了一幅Image,界面如下图所示,源码从这里下载

本例中使用Viewport2DVisual3D来呈现2D的Border,Border中包含了Image,对Viewport2DVisual3D使用了RotateTransform3D模型变换,以使Viewport2DVisual3D向左或者向右倾斜45度角,为使处于左右两端的Image能和背景图融为一体,使用LinearGradientBrush为这两幅Image设置了渐变的透明蒙板OpacityMask,

设置垂直倒影主要使用了VisualBrush和ScaleTransform3D,VisualBrush用来反射Image的图像,并将图像填充到GeometryModel3D的Material属性,通过设置ScaleTransform3D元素的属性ScaleY="-1",可变换模型以X轴为坐标向下180度倒置,由于对Image使用了RotateTransform3D变换,因此对反射Image图像的GeometryModel3D也需使用相同的RotateTransform3D变换 ,另外对控件的倒影设置了0.8个值的透明度,以便能清晰的显示2D控件界面并模糊控件界面的倒影

在呈现2D控件的时候,多次使用了Viewport2DVisual3D,但在反射控件界面倒影的时候,仅使用了一个ModelVisual3D元素,ModelVisual3D元素的Content属性值被设置为一个Model3DGroup元素,Model3DGroup是一个集合类,用来打包GeometryModel3D ,而2D Image的界面倒影图像最终填充到GeometryModel3D的Material属性上,因此在反射2D控件界面倒影的时候,使过Model3DGroup来组合GeometryModel3D ,只需要定义一个ModelVisual3D则成.

呈现2D控件

  1 <Viewport3D x:Name="viewPort3D" IsHitTestVisible="False" RenderOptions.EdgeMode="Aliased" 
  2                ClipToBounds="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
  3             <Viewport3D.Camera>
  4                 <PerspectiveCamera Position="-0.3,-0.5,9"   />
  5             </Viewport3D.Camera>
  6             <ModelVisual3D>
  7                 <ModelVisual3D.Content>
  8                     <AmbientLight Color="White"/>
  9                 </ModelVisual3D.Content>
 10             </ModelVisual3D>
 11             <Viewport2DVisual3D x:Name="viewport2DVisual3D0" Geometry="{StaticResource geometry1}" 
 12                                    Material="{StaticResource material}">
 13                 <Viewport2DVisual3D.Transform>
 14                     <Transform3DGroup>
 15                         <Transform3DGroup>
 16                             <RotateTransform3D>
 17                                 <RotateTransform3D.Rotation>
 18                                     <AxisAngleRotation3D Axis="0,1.,0" Angle="-45"/>
 19                                 </RotateTransform3D.Rotation>
 20                             </RotateTransform3D>
 21                             <TranslateTransform3D OffsetX="-2.12" OffsetY="0" OffsetZ="0" />
 22                         </Transform3DGroup>
 23                     </Transform3DGroup>
 24                 </Viewport2DVisual3D.Transform>
 25                 <Viewport2DVisual3D.Visual>
 26                     <Border  Style="{StaticResource border}">
 27                         <Image Source="Images\050817goodfeng14.jpg"  Opacity="1"  />
 28                     </Border>
 29                     </Viewport2DVisual3D.Visual>
 30             </Viewport2DVisual3D>
 31             <Viewport2DVisual3D x:Name="viewport2DVisual3D1" 
 32                  Geometry="{StaticResource geometry1}" Material="{StaticResource material}">
 33                 <Viewport2DVisual3D.Transform>
 34                     <Transform3DGroup>
 35                         <RotateTransform3D>
 36                             <RotateTransform3D.Rotation>
 37                                 <AxisAngleRotation3D Axis="0,1.,0" Angle="45"/>
 38                             </RotateTransform3D.Rotation>
 39                         </RotateTransform3D>
 40                         <TranslateTransform3D OffsetX="0.71" OffsetY="0" OffsetZ="0" />
 41                     </Transform3DGroup>
 42                 </Viewport2DVisual3D.Transform>
 43                 <Viewport2DVisual3D.Visual>
 44                     <Border  Style="{StaticResource border}">
 45                         <Image Source="Images\051027nature10.jpg"  Opacity="1"/>
 46                     </Border>
 47                 </Viewport2DVisual3D.Visual>
 48             </Viewport2DVisual3D>
 49             <Viewport2DVisual3D x:Name="viewport2DVisual3D2" 
 50                      Geometry="{StaticResource geometry1}" Material="{StaticResource material}">
 51                 <Viewport2DVisual3D.Transform>
 52                     <Transform3DGroup>
 53                         <RotateTransform3D>
 54                             <RotateTransform3D.Rotation>
 55                                 <AxisAngleRotation3D Axis="0,1.,0" Angle="-45"/>
 56                             </RotateTransform3D.Rotation>
 57                         </RotateTransform3D>
 58                         <TranslateTransform3D OffsetX="0.71" OffsetY="0" OffsetZ="0" />
 59                     </Transform3DGroup>
 60                 </Viewport2DVisual3D.Transform>
 61                 <Viewport2DVisual3D.Visual>
 62                     <Border  Style="{StaticResource border}" >
 63                         <Image Source="Images\051027nature11.jpg" Opacity="1" />
 64                     </Border>
 65                 </Viewport2DVisual3D.Visual>
 66             </Viewport2DVisual3D>
 67             <Viewport2DVisual3D x:Name="viewport2DVisual3D3" 
 68                     Geometry="{StaticResource geometry1}" Material="{StaticResource material}">
 69                 <Viewport2DVisual3D.Transform>
 70                     <Transform3DGroup>
 71                         <RotateTransform3D>
 72                             <RotateTransform3D.Rotation>
 73                                 <AxisAngleRotation3D Axis="0,1.,0" Angle="45"/>
 74                             </RotateTransform3D.Rotation>
 75                         </RotateTransform3D>
 76                         <TranslateTransform3D OffsetX="3.54" OffsetY="0" OffsetZ="0" />
 77                     </Transform3DGroup>
 78                 </Viewport2DVisual3D.Transform>
 79                 <Viewport2DVisual3D.Visual>
 80                     <Border  Style="{StaticResource border}" >
 81                         <Image Source="Images\051123Webshots16.jpg" Opacity="1">
 82                             <Image.OpacityMask>
 83                                 <LinearGradientBrush EndPoint="0.012,0.5" StartPoint="0.994,0.5">
 84                                     <GradientStop Color="#00000000" Offset="0"/>
 85                                     <GradientStop Color="#FFFFFFFF" Offset="1"/>
 86                                 </LinearGradientBrush>
 87                             </Image.OpacityMask>
 88                         </Image>
 89                     </Border>
 90                 </Viewport2DVisual3D.Visual>
 91             </Viewport2DVisual3D>
 92             <Viewport2DVisual3D x:Name="viewport2DVisual3D4" 
 93                      Geometry="{StaticResource geometry1}" Material="{StaticResource material}">
 94                 <Viewport2DVisual3D.Transform>
 95                     <Transform3DGroup>
 96                         <RotateTransform3D>
 97                             <RotateTransform3D.Rotation>
 98                                 <AxisAngleRotation3D Axis="0,1,0" Angle="45"/>
 99                             </RotateTransform3D.Rotation>
100                         </RotateTransform3D>
101                         <TranslateTransform3D OffsetX="-2.12" OffsetY="0" OffsetZ="-0" />
102                     </Transform3DGroup>
103                 </Viewport2DVisual3D.Transform>
104                 <Viewport2DVisual3D.Visual>
105                     <Border  Style="{StaticResource border}">
106                         <Image Source="Images\050817goodfeng15.jpg" Opacity="1" >
107                             <Image.OpacityMask>
108                                 <LinearGradientBrush EndPoint="0.994,0.5" StartPoint="0.012,0.5">
109                                     <GradientStop Color="#00000000" Offset="0"/>
110                                     <GradientStop Color="#FFFFFFFF" Offset="1"/>
111                                 </LinearGradientBrush>
112                             </Image.OpacityMask>
113                         </Image>
114                     </Border>
115                 </Viewport2DVisual3D.Visual>
116             </Viewport2DVisual3D>
117  </Viewport3D>

界面倒影

  1 <Viewport3D x:Name="reflectionViewPort3D" Opacity="0.8" IsHitTestVisible="False" 
  2             RenderOptions.EdgeMode="Aliased" ClipToBounds="False" 
  3                    HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
  4             <Viewport3D.Camera>
  5                 <PerspectiveCamera Position="-0.3,-0.5,9"   />
  6             </Viewport3D.Camera>
  7             <Viewport3D.OpacityMask>
  8                 <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
  9                     <GradientStop Color="#00000000"  Offset="0.55"/>
 10                     <GradientStop Color="#FFFFFFFF" Offset="0.01"/>
 11                 </LinearGradientBrush>
 12             </Viewport3D.OpacityMask>
 13             <ModelVisual3D>
 14                 <ModelVisual3D.Content>
 15                     <AmbientLight Color="White"/>
 16                 </ModelVisual3D.Content>
 17             </ModelVisual3D>
 18             <ModelVisual3D >
 19                 <ModelVisual3D.Content>
 20                     <Model3DGroup x:Name="reflctionRoom">
 21                         <Model3DGroup.Children>
 22                              <GeometryModel3D x:Name="reflctionChild0" 
 23                                      Geometry="{StaticResource geometry1}" >
 24                                 <GeometryModel3D.Material>
 25                                     <DiffuseMaterial>
 26                                         <DiffuseMaterial.Brush>
 27                                             <VisualBrush Visual="{Binding ElementName=viewport2DVisual3D0, Path=Visual}"/>
 28                                         </DiffuseMaterial.Brush>
 29                                     </DiffuseMaterial>
 30                                 </GeometryModel3D.Material>
 31                                 <GeometryModel3D.Transform>
 32                                     <Transform3DGroup>
 33                                         <RotateTransform3D>
 34                                             <RotateTransform3D.Rotation>
 35                                                 <AxisAngleRotation3D Axis="0,1.,0" Angle="-45"/>
 36                                             </RotateTransform3D.Rotation>
 37                                         </RotateTransform3D>
 38                                         <TranslateTransform3D OffsetX="-2.12" OffsetY="2" OffsetZ="0" />
 39                                         <ScaleTransform3D ScaleY="-1"/>
 40                                     </Transform3DGroup>
 41                                 </GeometryModel3D.Transform>
 42                              </GeometryModel3D>
 43                             <GeometryModel3D x:Name="reflctionChild1" Geometry="{StaticResource geometry1}" >
 44                                 <GeometryModel3D.Material>
 45                                     <DiffuseMaterial>
 46                                         <DiffuseMaterial.Brush>
 47                                             <VisualBrush Visual="{Binding ElementName=viewport2DVisual3D1, Path=Visual}"/>
 48                                         </DiffuseMaterial.Brush>
 49                                     </DiffuseMaterial>
 50                                 </GeometryModel3D.Material>
 51                                 <GeometryModel3D.Transform>
 52                                     <Transform3DGroup>
 53                                         <RotateTransform3D>
 54                                             <RotateTransform3D.Rotation>
 55                                                 <AxisAngleRotation3D Axis="0,1.,0" Angle="45"/>
 56                                             </RotateTransform3D.Rotation>
 57                                         </RotateTransform3D>
 58                                         <TranslateTransform3D OffsetX="0.71" OffsetY="2" OffsetZ="0" />
 59                                         <ScaleTransform3D ScaleY="-1"/>
 60                                     </Transform3DGroup>
 61                                 </GeometryModel3D.Transform>
 62                             </GeometryModel3D>
 63                             <GeometryModel3D x:Name="reflctionChild2" Geometry="{StaticResource geometry1}" >
 64                                 <GeometryModel3D.Material>
 65                                     <DiffuseMaterial>
 66                                         <DiffuseMaterial.Brush>
 67                                             <VisualBrush Visual="{Binding ElementName=viewport2DVisual3D2, Path=Visual}"/>
 68                                         </DiffuseMaterial.Brush>
 69                                     </DiffuseMaterial>
 70                                 </GeometryModel3D.Material>
 71                                 <GeometryModel3D.Transform>
 72                                     <Transform3DGroup>
 73                                         <RotateTransform3D>
 74                                             <RotateTransform3D.Rotation>
 75                                                 <AxisAngleRotation3D Axis="0,1.,0" Angle="-45"/>
 76                                             </RotateTransform3D.Rotation>
 77                                         </RotateTransform3D>
 78                                         <TranslateTransform3D OffsetX="0.71" OffsetY="2" OffsetZ="0" />
 79                                         <ScaleTransform3D ScaleY="-1"/>
 80                                     </Transform3DGroup>
 81                                 </GeometryModel3D.Transform>
 82                             </GeometryModel3D>
 83                             <GeometryModel3D x:Name="reflctionChild3" Geometry="{StaticResource geometry1}" >
 84                                 <GeometryModel3D.Material>
 85                                     <DiffuseMaterial>
 86                                         <DiffuseMaterial.Brush>
 87                                             <VisualBrush Visual="{Binding ElementName=viewport2DVisual3D3, Path=Visual}"/>
 88                                         </DiffuseMaterial.Brush>
 89                                     </DiffuseMaterial>
 90                                 </GeometryModel3D.Material>
 91                                 <GeometryModel3D.Transform>
 92                                     <Transform3DGroup>
 93                                         <RotateTransform3D>
 94                                             <RotateTransform3D.Rotation>
 95                                                 <AxisAngleRotation3D Axis="0,1.,0" Angle="45"/>
 96                                             </RotateTransform3D.Rotation>
 97                                         </RotateTransform3D>
 98                                         <TranslateTransform3D OffsetX="3.54" OffsetY="2" OffsetZ="0" />
 99                                         <ScaleTransform3D ScaleY="-1"/>
100                                     </Transform3DGroup>
101                                 </GeometryModel3D.Transform>
102                             </GeometryModel3D>
103                             <GeometryModel3D x:Name="reflctionChild4" Geometry="{StaticResource geometry1}" >
104                                 <GeometryModel3D.Material>
105                                     <DiffuseMaterial>
106                                         <DiffuseMaterial.Brush>
107                                             <VisualBrush Visual="{Binding ElementName=viewport2DVisual3D4, Path=Visual}"/>
108                                         </DiffuseMaterial.Brush>
109                                     </DiffuseMaterial>
110                                 </GeometryModel3D.Material>
111                                 <GeometryModel3D.Transform>
112                                     <Transform3DGroup>
113                                         <RotateTransform3D>
114                                             <RotateTransform3D.Rotation>
115                                                 <AxisAngleRotation3D Axis="0,1,0" Angle="45"/>
116                                             </RotateTransform3D.Rotation>
117                                         </RotateTransform3D>
118                                         <TranslateTransform3D OffsetX="-2.12" OffsetY="2" OffsetZ="-0" />
119                                         <ScaleTransform3D ScaleY="-1"/>
120                                     </Transform3DGroup>
121                                 </GeometryModel3D.Transform>
122                             </GeometryModel3D>
123                         </Model3DGroup.Children>
124                     </Model3DGroup>
125                 </ModelVisual3D.Content>
126             </ModelVisual3D>
127     </Viewport3D>

转载于:https://www.cnblogs.com/ddoo/archive/2010/09/03/1817005.html

WPF案例 (五) 对控件界面使用倒影相关推荐

  1. WPF IP地址输入控件的实现

    WPF IP地址输入控件的实现 原文:WPF IP地址输入控件的实现 一.前言 WPF没有内置IP地址输入控件,因此我们需要通过自己定义实现. 我们先看一下IP地址输入控件有什么特性: 输满三个数字焦 ...

  2. WPF编程,将控件所呈现的内容保存成图像的一种方法。

    WPF编程,将控件所呈现的内容保存成图像的一种方法. 原文:WPF编程,将控件所呈现的内容保存成图像的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.ne ...

  3. 安卓案例:列表控件上拉加载更多

    文章目录 一.上拉加载更多使用场景 二.案例演示 - 列表控件上拉加载更多 (一)运行效果 (二)涉及知识点 (三)实现步骤 1.创建安卓应用[ListViewLoadMore] 2.将背景图片拷贝到 ...

  4. WPF自定义日期时间控件

    WPF自定义日期时间控件 一.需求分析 二.功能实现 一.需求分析 在工作中遇到的项目中,大部分软件是处于全屏运行状态,这时候就需要在软件的界面上加上日期时间那些,方便用户查看当前时间. 二.功能实现 ...

  5. C# wpf 实现Canvas内控件拖动

    系列文章目录 第一章 Grid内控件拖动 第二章 Canvas内控件拖动(本章) 第三章 任意控件拖动 第四章 窗口拖动 第五章 附加属性实现任意拖动 文章目录 系列文章目录 前言 一.如何实现? 1 ...

  6. 在WPF中使用WinForm控件方法

    在WPF中使用WinForm控件方法 原文:在WPF中使用WinForm控件方法 1.      首先添加对如下两个dll文件的引用:WindowsFormsIntegration.dll,Syste ...

  7. Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决

    Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决 参考文章: (1)Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决 (2)https://www. ...

  8. WPF 绑定StaticResource到控件的方法

    WPF 绑定StaticResource到控件的方法 原文:WPF 绑定StaticResource到控件的方法 资源文件内的属性能否直接通过绑定应用到控件?答案是肯定的. 比如,我们要直接把下面的& ...

  9. PyQt5 第五章 控件(一)

    5.1 按钮控件 5.1.1 复选框 QCheckBox组件有俩状态:开和关,通常跟标签一起使用,用在激活和关闭一些选项的场景 程序展示 本例中,有一个能切换窗口标题的单选框 import sys f ...

  10. 如何在wpf中使用winform控件或者winform的自定义控件

    前言 在wpf中使用winform控件或者winform的自定义控件 一.添加引用 WindowsFormsIntegration.dll System.Windows.Forms.dll 提示:这两 ...

最新文章

  1. R语言ggplot2包和ggtext包在可视化图像中的指定位置添加文本框(横向文本框、竖向文本框)
  2. 2.2.2 进程调度的 时机 切换与过程 调度方式
  3. MFC-使用自定义控件的方法
  4. 用nohup重定向python输出到文件不成功的解决办法
  5. 无线上网卡和无线网卡的区别
  6. jQuery应用之eraser.js使用,实现擦除、刮刮卡效果
  7. 计算机通过注册表修改摄像机设备的名称
  8. Java io和nio的应用场景_java中IO和NIO的区别和适用场景
  9. 各层电子数排布规则_电子数的排布规律
  10. 控制系统分析与设计(三):非线性数学模型的线性化
  11. 如何在电脑上复制微信文章图片
  12. 淘宝天猫京东拼多多等平台关键词监控价格API接口(店铺商品价格监控API接口代码对接展示)
  13. java设计模式之享元设计模式
  14. 来自清华大学开源镜像站LinuxToy的公开信~
  15. Ubuntu系统备份到U盘
  16. uniapp扫一扫功能实现
  17. 海康威视设备 JAVA SDK SpringBoot实现人脸、车辆、门禁图片抓取
  18. Xqk.Data数据框架开发指南:丰富的、灵活的查询方法(第三部分:SqlField)
  19. 怎么查看CAD建筑图纸?CAD快速看图怎么实现?
  20. 【攻克Dota2】OpenAI自学习多智能体5v5团队战击败人类玩家

热门文章

  1. Critical dependency: require function dependencies cannot be statically extracted
  2. 05. 对定制的类型转换函数保持警觉
  3. linux内存中的文件权限,理解Linux文件权限
  4. latex 左对齐_LaTeX从入门到提高(3)
  5. 232接口针脚定义_VGA接口定义,详细图文资料
  6. 大数据平台搭建及搭建过程出错解析
  7. Ubuntu18.04下基于YoloV4 的Keras物体识别
  8. EasyExcel导出excel(写)
  9. python 代码分块_python大数据分块处理
  10. 台式计算机内存是什么问题,台式电脑提示内存不足怎么回事