[源码下载]

背水一战 Windows 10 (70) - 控件(控件基类): UIElement - Transform3D(3D变换), Projection(3D投影)

作者:webabcd

介绍
背水一战 Windows 10 之 控件(控件基类 - UIElement)

  • Transform3D(3D变换)
  • Projection(3D投影)

示例
1、演示 UIElement 的 3D 变换的应用
Controls/BaseControl/UIElementDemo/Transform3DDemo.xaml

  1. <Page
  2. x:Class="Windows10.Controls.BaseControl.UIElementDemo.Transform3DDemo"
  3. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:local="using:Windows10.Controls.BaseControl.UIElementDemo"
  6. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  7. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  8. mc:Ignorable="d">
  9.  
  10. <Grid Background="Transparent">
  11.  
  12. <!--
  13. UIElement - UIElement
  14. Transform3D - 3D 变换(通过 CompositeTransform3D 结合 PerspectiveTransform3D 来完成 3D 变换)
  15. -->
  16.  
  17. <Grid.Transform3D>
  18. <!--
  19. PerspectiveTransform3D - 让指定的空间内的元素支持通过 CompositeTransform3D 来实现 3D 变换
  20. OffsetX - 透视原点相对于元素中心的 x 方向的偏移量
  21. OffsetY - 透视原点相对于元素中心的 y 方向的偏移量
  22. Depth - 到 z=0 的平面的距离,必须大于 0,默认值为 1000
  23. -->
  24. <PerspectiveTransform3D OffsetX="{x:Bind sliderOX.Value, Mode=OneWay}"
  25. OffsetY="{x:Bind sliderOY.Value, Mode=OneWay}"
  26. Depth="{x:Bind sliderD.Value, Mode=OneWay}">
  27.  
  28. </PerspectiveTransform3D>
  29. </Grid.Transform3D>
  30.  
  31. <StackPanel HorizontalAlignment="Center">
  32. <Image Source="/Assets/hololens.jpg" Width="200" Height="200" Name="image" Margin="5">
  33. <Image.Transform3D>
  34. <!--
  35. CompositeTransform3D - 为 UIElement 实现 3D 变换(此 UIElement 的祖辈必须要设置了 PerspectiveTransform3D)
  36. CenterX, CenterY, CenterZ - 3D 变换的中心点位置(单位:像素)
  37. RotationX, RotationY, RotationZ - 3D 变换的旋转角度(单位:度)
  38. ScaleX, ScaleY, ScaleZ - 3D 变换的缩放比例
  39. TranslateX, TranslateY, TranslateZ - 3D 变换的位移距离(单位:像素)
  40.  
  41. 注意:x 坐标向右为正,y 坐标向下为正,z 坐标向你为正(左手坐标系)
  42. -->
  43. <CompositeTransform3D CenterX="{x:Bind sliderCX.Value, Mode=OneWay}"
  44. CenterY="{x:Bind sliderCY.Value, Mode=OneWay}"
  45. CenterZ="{x:Bind sliderCZ.Value, Mode=OneWay}"
  46.  
  47. RotationX="{x:Bind sliderRX.Value, Mode=OneWay}"
  48. RotationY="{x:Bind sliderRY.Value, Mode=OneWay}"
  49. RotationZ="{x:Bind sliderRZ.Value, Mode=OneWay}"
  50.  
  51. ScaleX="{x:Bind sliderSX.Value, Mode=OneWay}"
  52. ScaleY="{x:Bind sliderSY.Value, Mode=OneWay}"
  53. ScaleZ="{x:Bind sliderSZ.Value, Mode=OneWay}"
  54.  
  55. TranslateX="{x:Bind sliderTX.Value, Mode=OneWay}"
  56. TranslateY="{x:Bind sliderTY.Value, Mode=OneWay}"
  57. TranslateZ="{x:Bind sliderTZ.Value, Mode=OneWay}">
  58. </CompositeTransform3D>
  59. </Image.Transform3D>
  60. </Image>
  61.  
  62. <StackPanel Orientation="Horizontal" Margin="5">
  63. <Slider Name="sliderOX" Minimum="-100" Maximum="100" Width="200" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  64. <Slider.Header>
  65. <StackPanel Orientation="Horizontal">
  66. <TextBlock Text="OffsetX: "/>
  67. <TextBlock Text="{x:Bind sliderOX.Value, Mode=OneWay}" />
  68. </StackPanel>
  69. </Slider.Header>
  70. </Slider>
  71. <Slider Name="sliderOY" Minimum="-100" Maximum="100" Width="200" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  72. <Slider.Header>
  73. <StackPanel Orientation="Horizontal">
  74. <TextBlock Text="OffsetY: "/>
  75. <TextBlock Text="{x:Bind sliderOY.Value, Mode=OneWay}" />
  76. </StackPanel>
  77. </Slider.Header>
  78. </Slider>
  79. <Slider Name="sliderD" Minimum="100" Maximum="5000" Value="1000" Width="200" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  80. <Slider.Header>
  81. <StackPanel Orientation="Horizontal">
  82. <TextBlock Text="Depth: "/>
  83. <TextBlock Text="{x:Bind sliderD.Value, Mode=OneWay}" />
  84. </StackPanel>
  85. </Slider.Header>
  86. </Slider>
  87. </StackPanel>
  88.  
  89. <StackPanel Orientation="Horizontal" Margin="5">
  90. <Slider Name="sliderCX" Minimum="-300" Maximum="300" Width="200" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  91. <Slider.Header>
  92. <StackPanel Orientation="Horizontal">
  93. <TextBlock Text="CenterX: "/>
  94. <TextBlock Text="{x:Bind sliderCX.Value, Mode=OneWay}" />
  95. </StackPanel>
  96. </Slider.Header>
  97. </Slider>
  98. <Slider Name="sliderCY" Minimum="-300" Maximum="300" Width="200" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  99. <Slider.Header>
  100. <StackPanel Orientation="Horizontal">
  101. <TextBlock Text="CenterY: "/>
  102. <TextBlock Text="{x:Bind sliderCY.Value, Mode=OneWay}" />
  103. </StackPanel>
  104. </Slider.Header>
  105. </Slider>
  106. <Slider Name="sliderCZ" Minimum="-300" Maximum="300" Width="200" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  107. <Slider.Header>
  108. <StackPanel Orientation="Horizontal">
  109. <TextBlock Text="CenterZ: "/>
  110. <TextBlock Text="{x:Bind sliderCZ.Value, Mode=OneWay}" />
  111. </StackPanel>
  112. </Slider.Header>
  113. </Slider>
  114. </StackPanel>
  115.  
  116. <StackPanel Orientation="Horizontal" Margin="5">
  117. <Slider Name="sliderRX" Minimum="0" Maximum="360" Width="200" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  118. <Slider.Header>
  119. <StackPanel Orientation="Horizontal">
  120. <TextBlock Text="RotationX: "/>
  121. <TextBlock Text="{x:Bind sliderRX.Value, Mode=OneWay}" />
  122. </StackPanel>
  123. </Slider.Header>
  124. </Slider>
  125. <Slider Name="sliderRY" Minimum="0" Maximum="360" Width="200" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  126. <Slider.Header>
  127. <StackPanel Orientation="Horizontal">
  128. <TextBlock Text="RotationY: "/>
  129. <TextBlock Text="{x:Bind sliderRY.Value, Mode=OneWay}" />
  130. </StackPanel>
  131. </Slider.Header>
  132. </Slider>
  133. <Slider Name="sliderRZ" Minimum="0" Maximum="360" Width="200" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  134. <Slider.Header>
  135. <StackPanel Orientation="Horizontal">
  136. <TextBlock Text="RotationZ: "/>
  137. <TextBlock Text="{x:Bind sliderRZ.Value, Mode=OneWay}" />
  138. </StackPanel>
  139. </Slider.Header>
  140. </Slider>
  141. </StackPanel>
  142.  
  143. <StackPanel Orientation="Horizontal" Margin="5">
  144. <Slider Name="sliderSX" Minimum="0.1" Maximum="10" StepFrequency="0.1" Value="1" Width="200" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  145. <Slider.Header>
  146. <StackPanel Orientation="Horizontal">
  147. <TextBlock Text="ScaleX: "/>
  148. <TextBlock Text="{x:Bind sliderSX.Value, Mode=OneWay}" />
  149. </StackPanel>
  150. </Slider.Header>
  151. </Slider>
  152. <Slider Name="sliderSY" Minimum="0.1" Maximum="10" StepFrequency="0.1" Value="1" Width="200" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  153. <Slider.Header>
  154. <StackPanel Orientation="Horizontal">
  155. <TextBlock Text="ScaleY: "/>
  156. <TextBlock Text="{x:Bind sliderSY.Value, Mode=OneWay}" />
  157. </StackPanel>
  158. </Slider.Header>
  159. </Slider>
  160. <Slider Name="sliderSZ" Minimum="0.1" Maximum="10" StepFrequency="0.1" Value="1" Width="200" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  161. <Slider.Header>
  162. <StackPanel Orientation="Horizontal">
  163. <TextBlock Text="ScaleZ: "/>
  164. <TextBlock Text="{x:Bind sliderSZ.Value, Mode=OneWay}" />
  165. </StackPanel>
  166. </Slider.Header>
  167. </Slider>
  168. </StackPanel>
  169.  
  170. <StackPanel Orientation="Horizontal" Margin="5">
  171. <Slider Name="sliderTX" Minimum="-100" Maximum="100" Width="200" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  172. <Slider.Header>
  173. <StackPanel Orientation="Horizontal">
  174. <TextBlock Text="TranslateX: "/>
  175. <TextBlock Text="{x:Bind sliderTX.Value, Mode=OneWay}" />
  176. </StackPanel>
  177. </Slider.Header>
  178. </Slider>
  179. <Slider Name="sliderTY" Minimum="-100" Maximum="100" Width="200" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  180. <Slider.Header>
  181. <StackPanel Orientation="Horizontal">
  182. <TextBlock Text="TranslateY: "/>
  183. <TextBlock Text="{x:Bind sliderTY.Value, Mode=OneWay}" />
  184. </StackPanel>
  185. </Slider.Header>
  186. </Slider>
  187. <Slider Name="sliderTZ" Minimum="-100" Maximum="100" Width="200" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  188. <Slider.Header>
  189. <StackPanel Orientation="Horizontal">
  190. <TextBlock Text="TranslateZ: "/>
  191. <TextBlock Text="{x:Bind sliderTZ.Value, Mode=OneWay}" />
  192. </StackPanel>
  193. </Slider.Header>
  194. </Slider>
  195. </StackPanel>
  196. </StackPanel>
  197. </Grid>
  198. </Page>

Controls/BaseControl/UIElementDemo/Transform3DDemo.xaml.cs

  1. /*
  2. * UIElement - UIElement(继承自 DependencyObject, 请参见 /Controls/BaseControl/DependencyObjectDemo/)
  3. * Transform3D - 3D 变换
  4. *
  5. *
  6. * 本例用于演示 UIElement 的 3D 变换的应用
  7. */
  8.  
  9. using Windows.UI.Xaml.Controls;
  10.  
  11. namespace Windows10.Controls.BaseControl.UIElementDemo
  12. {
  13. public sealed partial class Transform3DDemo : Page
  14. {
  15. public Transform3DDemo()
  16. {
  17. this.InitializeComponent();
  18. }
  19. }
  20. }

2、演示 UIElement 的投影(模拟 3D 效果)的应用
Controls/BaseControl/UIElementDemo/ProjectionDemo.xaml

  1. <Page
  2. x:Class="Windows10.Controls.BaseControl.UIElementDemo.ProjectionDemo"
  3. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:local="using:Windows10.Controls.BaseControl.UIElementDemo"
  6. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  7. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  8. mc:Ignorable="d">
  9.  
  10. <Grid Background="Transparent">
  11. <StackPanel Margin="10 0 10 10" HorizontalAlignment="Center">
  12.  
  13. <!--
  14. Projection - 投影(模拟 3D 效果,可用类型有 PlaneProjection 和 Matrix3DProjection)
  15.  
  16. PlaneProjection - 将对象投影到平面(通过 x,y,z 方向的旋转和位移控制投影),用于模拟出 UIElement 的 3D 效果
  17. RotationX, RotationY, RotationZ - 绕 X轴, Y轴, Z轴 旋转的角度
  18. CenterOfRotationX, CenterOfRotationY, CenterOfRotationZ - X轴, Y轴, Z轴 旋转中心点的位置
  19. CenterOfRotationX - 相对值,默认值为 0.5 即中心,0 代表 UIElement 的最左端,1 代表 UIElement 的最右端,可以小于 0 也可以大于 1
  20. CenterOfRotationY - 相对值,默认值为 0.5 即中心,0 代表 UIElement 的最顶端,1 代表 UIElement 的最底端,可以小于 0 也可以大于 1
  21. CenterOfRotationZ - 像素值,默认值为 0,靠向你的方向为正,远离你的方向为负(即左手坐标系)
  22. GlobalOffsetX, GlobalOffsetY, GlobalOffsetZ - 沿 X轴, Y轴, Z轴 的偏移量,此 3 个方向与屏幕的 3 个方向相同
  23. LocalOffsetX, LocalOffsetY, LocalOffsetZ - 沿 X轴, Y轴, Z轴 的偏移量,此 3 个方向与相关的 UIElement 当前的 3 个方向相同
  24. ProjectionMatrix - 获取当前投影的 Matrix3D 投影矩阵
  25.  
  26. Matrix3DProjection - 将对象投影到平面(通过 Matrix3D 矩阵控制投影),用于模拟出 UIElement 的 3D 效果
  27. ProjectionMatrix - 获取或设置当前投影的 Matrix3D 投影矩阵
  28. -->
  29.  
  30. <Grid HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0 20 0 0">
  31. <Rectangle Width="200" Height="100" StrokeDashArray="3,1" Stroke="Blue" StrokeThickness="3" />
  32. <Rectangle Width="200" Height="100" Fill="Yellow" Stroke="Red" StrokeThickness="3" Opacity="0.3">
  33. <Rectangle.Projection>
  34. <PlaneProjection x:Name="planeProjection"
  35. CenterOfRotationX="{x:Bind sliderCRX.Value, Mode=OneWay}"
  36. CenterOfRotationY="{x:Bind sliderCRY.Value, Mode=OneWay}"
  37. CenterOfRotationZ="{x:Bind sliderCRZ.Value, Mode=OneWay}"
  38.  
  39. RotationX="{x:Bind sliderRX.Value, Mode=OneWay}"
  40. RotationY="{x:Bind sliderRY.Value, Mode=OneWay}"
  41. RotationZ="{x:Bind sliderRZ.Value, Mode=OneWay}"
  42.  
  43. LocalOffsetX="{x:Bind sliderLOX.Value, Mode=OneWay}"
  44. LocalOffsetY="{x:Bind sliderLOY.Value, Mode=OneWay}"
  45. LocalOffsetZ="{x:Bind sliderLOZ.Value, Mode=OneWay}"
  46.  
  47. GlobalOffsetX="{x:Bind sliderGOX.Value, Mode=OneWay}"
  48. GlobalOffsetY="{x:Bind sliderGOY.Value, Mode=OneWay}"
  49. GlobalOffsetZ="{x:Bind sliderGOZ.Value, Mode=OneWay}">
  50. </PlaneProjection>
  51. </Rectangle.Projection>
  52. </Rectangle>
  53. </Grid>
  54.  
  55. <StackPanel Orientation="Horizontal" Margin="0 30 0 0">
  56. <Slider Name="sliderCRX" Minimum="-1" Maximum="2" StepFrequency="0.1" Value="0.5" Width="200" HorizontalAlignment="Left" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  57. <Slider.Header>
  58. <StackPanel Orientation="Horizontal">
  59. <TextBlock Text="CenterOfRotationX: "/>
  60. <TextBlock Text="{x:Bind sliderCRX.Value, Mode=OneWay}" />
  61. </StackPanel>
  62. </Slider.Header>
  63. </Slider>
  64. <Slider Name="sliderCRY" Minimum="-1" Maximum="2" StepFrequency="0.1" Value="0.5" Width="200" HorizontalAlignment="Left" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  65. <Slider.Header>
  66. <StackPanel Orientation="Horizontal">
  67. <TextBlock Text="CenterOfRotationY: "/>
  68. <TextBlock Text="{x:Bind sliderCRY.Value, Mode=OneWay}" />
  69. </StackPanel>
  70. </Slider.Header>
  71. </Slider>
  72. <Slider Name="sliderCRZ" Minimum="-100" Maximum="100" Value="0" Width="200" HorizontalAlignment="Left" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  73. <Slider.Header>
  74. <StackPanel Orientation="Horizontal">
  75. <TextBlock Text="CenterOfRotationZ: "/>
  76. <TextBlock Text="{x:Bind sliderCRZ.Value, Mode=OneWay}" />
  77. </StackPanel>
  78. </Slider.Header>
  79. </Slider>
  80. </StackPanel>
  81.  
  82. <StackPanel Orientation="Horizontal">
  83. <Slider Name="sliderRX" Minimum="0" Maximum="360" Width="200" HorizontalAlignment="Left" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  84. <Slider.Header>
  85. <StackPanel Orientation="Horizontal">
  86. <TextBlock Text="RotationX: "/>
  87. <TextBlock Text="{x:Bind sliderRX.Value, Mode=OneWay}" />
  88. </StackPanel>
  89. </Slider.Header>
  90. </Slider>
  91. <Slider Name="sliderRY" Minimum="0" Maximum="360" Width="200" HorizontalAlignment="Left" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  92. <Slider.Header>
  93. <StackPanel Orientation="Horizontal">
  94. <TextBlock Text="RotationY: "/>
  95. <TextBlock Text="{x:Bind sliderRY.Value, Mode=OneWay}" />
  96. </StackPanel>
  97. </Slider.Header>
  98. </Slider>
  99. <Slider Name="sliderRZ" Minimum="0" Maximum="360" Width="200" HorizontalAlignment="Left" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  100. <Slider.Header>
  101. <StackPanel Orientation="Horizontal">
  102. <TextBlock Text="RotationZ: "/>
  103. <TextBlock Text="{x:Bind sliderRZ.Value, Mode=OneWay}" />
  104. </StackPanel>
  105. </Slider.Header>
  106. </Slider>
  107. </StackPanel>
  108.  
  109. <StackPanel Orientation="Horizontal">
  110. <Slider Name="sliderLOX" Minimum="-150" Maximum="150" Width="200" HorizontalAlignment="Left" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  111. <Slider.Header>
  112. <StackPanel Orientation="Horizontal">
  113. <TextBlock Text="LocalOffsetX: "/>
  114. <TextBlock Text="{x:Bind sliderLOX.Value, Mode=OneWay}" />
  115. </StackPanel>
  116. </Slider.Header>
  117. </Slider>
  118. <Slider Name="sliderLOY" Minimum="-150" Maximum="150" Width="200" HorizontalAlignment="Left" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  119. <Slider.Header>
  120. <StackPanel Orientation="Horizontal">
  121. <TextBlock Text="LocalOffsetY: "/>
  122. <TextBlock Text="{x:Bind sliderLOY.Value, Mode=OneWay}" />
  123. </StackPanel>
  124. </Slider.Header>
  125. </Slider>
  126. <Slider Name="sliderLOZ" Minimum="-150" Maximum="150" Width="200" HorizontalAlignment="Left" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  127. <Slider.Header>
  128. <StackPanel Orientation="Horizontal">
  129. <TextBlock Text="LocalOffsetZ: "/>
  130. <TextBlock Text="{x:Bind sliderLOZ.Value, Mode=OneWay}" />
  131. </StackPanel>
  132. </Slider.Header>
  133. </Slider>
  134. </StackPanel>
  135.  
  136. <StackPanel Orientation="Horizontal">
  137. <Slider Name="sliderGOX" Minimum="-150" Maximum="150" Width="200" HorizontalAlignment="Left" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  138. <Slider.Header>
  139. <StackPanel Orientation="Horizontal">
  140. <TextBlock Text="GlobalOffsetX: "/>
  141. <TextBlock Text="{x:Bind sliderGOX.Value, Mode=OneWay}" />
  142. </StackPanel>
  143. </Slider.Header>
  144. </Slider>
  145. <Slider Name="sliderGOY" Minimum="-150" Maximum="150" Width="200" HorizontalAlignment="Left" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  146. <Slider.Header>
  147. <StackPanel Orientation="Horizontal">
  148. <TextBlock Text="GlobalOffsetY: "/>
  149. <TextBlock Text="{x:Bind sliderGOY.Value, Mode=OneWay}" />
  150. </StackPanel>
  151. </Slider.Header>
  152. </Slider>
  153. <Slider Name="sliderGOZ" Minimum="-150" Maximum="150" Width="200" HorizontalAlignment="Left" Foreground="Orange" Background="White" Style="{StaticResource MySliderStyle}" Margin="10">
  154. <Slider.Header>
  155. <StackPanel Orientation="Horizontal">
  156. <TextBlock Text="GlobalOffsetZ: "/>
  157. <TextBlock Text="{x:Bind sliderGOZ.Value, Mode=OneWay}" />
  158. </StackPanel>
  159. </Slider.Header>
  160. </Slider>
  161. </StackPanel>
  162. </StackPanel>
  163. </Grid>
  164. </Page>

Controls/BaseControl/UIElementDemo/ProjectionDemo.xaml.cs

  1. /*
  2. * UIElement - UIElement(继承自 DependencyObject, 请参见 /Controls/BaseControl/DependencyObjectDemo/)
  3. * Projection - 投影(模拟 3D 效果)
  4. * PlaneProjection - 将对象投影到平面(通过 x,y,z 方向的旋转和位移控制投影)
  5. * Matrix3DProjection - 将对象投影到平面(通过 Matrix3D 矩阵控制投影)
  6. *
  7. *
  8. * 本例用于演示 UIElement 的投影(模拟 3D 效果)的应用
  9. */
  10.  
  11. using Windows.UI.Xaml.Controls;
  12.  
  13. namespace Windows10.Controls.BaseControl.UIElementDemo
  14. {
  15. public sealed partial class ProjectionDemo : Page
  16. {
  17. public ProjectionDemo()
  18. {
  19. this.InitializeComponent();
  20. }
  21. }
  22. }

OK
[源码下载]

背水一战 Windows 10 (70) - 控件(控件基类): UIElement - Transform3D(3D变换), Projection(3D投影)的更多相关文章

  1. 背水一战 Windows 10 (16) - 动画: ThemeAnimation(主题动画)

    [源码下载] 背水一战 Windows 10 (16) - 动画: ThemeAnimation(主题动画) 作者:webabcd 介绍背水一战 Windows 10 之 动画 PopInThemeA ...

  2. 背水一战 Windows 10 (37) - 控件(弹出类): MessageDialog, ContentDialog

    [源码下载] 背水一战 Windows 10 (37) - 控件(弹出类): MessageDialog, ContentDialog 作者:webabcd 介绍背水一战 Windows 10 之 控 ...

  3. 背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu

    [源码下载] 背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu 作者:webabcd 介绍背水一战 Windows 10 之 控件(弹 ...

  4. 背水一战 Windows 10 (35) - 控件(弹出类): FlyoutBase, Flyout, MenuFlyout

    [源码下载] 背水一战 Windows 10 (35) - 控件(弹出类): FlyoutBase, Flyout, MenuFlyout 作者:webabcd 介绍背水一战 Windows 10 之 ...

  5. 背水一战 Windows 10 (34) - 控件(进度类): RangeBase, Slider, ProgressBar, ProgressRing

    [源码下载] 背水一战 Windows 10 (34) - 控件(进度类): RangeBase, Slider, ProgressBar, ProgressRing 作者:webabcd 介绍背水一 ...

  6. 背水一战 Windows 10 (33) - 控件(选择类): ListBox, RadioButton, CheckBox, ToggleSwitch

    [源码下载] 背水一战 Windows 10 (33) - 控件(选择类): ListBox, RadioButton, CheckBox, ToggleSwitch 作者:webabcd 介绍背水一 ...

  7. 背水一战 Windows 10 (32) - 控件(选择类): Selector, ComboBox

    [源码下载] 背水一战 Windows 10 (32) - 控件(选择类): Selector, ComboBox 作者:webabcd 介绍背水一战 Windows 10 之 控件(选择类) Sel ...

  8. 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButton, AppBarButton, AppBarToggleButton

    [源码下载] 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButt ...

  9. 背水一战 Windows 10 (30) - 控件(文本类): AutoSuggestBox

    [源码下载] 背水一战 Windows 10 (30) - 控件(文本类): AutoSuggestBox 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) AutoSug ...

随机推荐

  1. leetcode102

    本题是广度优先遍历(BFS)实现树的层次遍历,使用队列实现. class Solution { public: vector<vector<int>> levelOrder(T ...

  2. DRF框架简介(第一天)

    1.drf框架全称 djangorestframework 1.如何安装drf框架: pip3 install djangorestframework #drf框架其实就是一个app称之为drf #d ...

  3. python 数据分析库介绍

    1 引言 高效处理数据的python工具: 与外界进行交互: 读写各种文件格式和数据库 准备: 对数据进行清理.修整.整合.规范化.重塑.切片切换.变形等处理以便进行分析 转换: 对数据集做一些数学和 ...

  4. Elasticsearch **代码片段

    ```JAVA BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery(); RangeQueryBuilder createTimeQuery ...

  5. mvc:view-controller标签使用

    mvc:view-controller可以在不需要Controller处理request的情况,转向到设置的View,完成无Controller的path和view的直接映射. 1.重定向 <m ...

  6. Delphi TXLSReadWriteII 导出EXCEL

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  7. 如何用poi生成导出excel

    import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Sheet; import java. ...

  8. POJ-1797.HeavyTransportation(最长路中的最小权值)

    本题思路:最短路变形,改变松弛方式即可,dist存的是源结点到当前结点的最长路的最小权值. 参考代码: #include <cstdio> #include <cstring> ...

  9. HDU6446 Tree and Permutation(树上DP)

    传送门:点我 Tree and Permutation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (J ...

  10. git连接远程客户端,命令行窗口上传文件

    1.git官网,下载安装git客户端 2.配置全局的name和email,生成key git config --global user.name  XXX git config --global us ...