在Win8.1中,引入了一個PlaneProjection可以實現3D變換,但它的變換方式比較簡單,只能實現基本的旋轉操作。在Windows 10 UWP中,引入了一個更加強大的3D變換Transform3D,系統默認內置了兩中變換方式:PerspectiveTransform3D和CompositeTransform3D。一個簡單的示例如下:
<StackPanel HorizontalAlignment="Center"> <Image Source="Assets\img.jpg" Width="400" Name="image"> <Image.Transform3D> <CompositeTransform3D CenterX="200" CenterY="100" RotationX="{x:Bind sliderX.Value,Mode=OneWay}" RotationY="{x:Bind sliderY.Value,Mode=OneWay}" RotationZ="{x:Bind sliderZ.Value,Mode=OneWay}"> </CompositeTransform3D> </Image.Transform3D> </Image> <Slider x:Name="sliderX" Maximum="360" Width="400" Margin="0,10,0,10"></Slider> <Slider x:Name="sliderY" Maximum="360" Width="400" Margin="0,10,0,10"></Slider> <Slider x:Name="sliderZ" Maximum="360" Width="400" Margin="0,10,0,10"></Slider> </StackPanel>
運行效果如下:
上面的例子比較簡單,一旦和動畫結合起來后,是可以實現非常酷的3D動畫效果的,Win10的磁貼翻轉效果貌似就是用它做的。最后提一下的是,貌似CompositeTransform3D的旋轉中心點只能傳入絕對位置,而無法傳入類似(0.5, 0.5)之類的相對位置,用起來時需要先計算大小,略有不便。