使用PlaneProjection类能够实现在二维平面上产生类似于三维视觉的效果,主要是通过在X、Y、Z三个坐标轴上应用平移或者旋转变换来完成透视处理的。
在运行PlaneProjection类之前,应当简单了解一下透视变换的坐标系结构。假设用户正对着设备屏幕,那么,屏幕上水平方向为X轴,向右延伸为正方向,向左则为负方向;屏幕竖直方向为Y轴,正方向朝上,负方向朝下;而Z轴是垂直于屏幕所在的平面,正方向指向用户自己,负方向指向屏幕背面。
接下来,还要知道,在透视变换中有两个坐标控件——全局坐标和本地坐标。在PlaneProjection类的公共属性中,以"Global"开头命名的即为全局坐标,即该坐标空间是相对于屏幕而言的;以"Local"开头命名的是本地坐标,坐标空间是相对于可视化对象本身。
既然透视变换可以对可视化对象进行旋转,那就需要设置旋转中心(原点 坐标),PlaneProjection类中CenterOfRotationX、CenterOfRotationY以及CenterOfRotationZ三个属性分别用于设定X、Y、Z三个坐标轴上的旋转中心。属性值使用相对位置,即属性值的范围在0~1之间(包括0和1)。以X轴为例,如果旋转中心为0,表示旋转原点位于对象的左端;当值为1时,旋转原点位于对象的最右端;当值为0.5时,旋转原点在对象的正中间。CenterOfRotationX属性和CenterOfRotationY属性的默认值均为0.5,即位于可视化对象的几何中心,而CenterOfRotationZ属性的默认值为0。
示例如下:
<TextBlock Text="测试文本" FontSize="100">
<TextBlock.Projection>
<PlaneProjection RotationY="60" GlobalOffsetZ="200" LocalOffsetX="-60"/>
</TextBloc