silverlight 透视变换

来源:互联网 发布:唯一网络王宇杰 编辑:程序博客网 时间:2024/05/12 09:55

透视变换是模拟在3D空间旋转XAML元素的一种变换,他不是真正的3D变换,但是模拟的效果很不错。它允许开发和设计人员将2D图像运用到一个3D平面中。用户可以在3维空间中旋转或者放大缩小图片内容而程序并不必要添加其他的代码实现。其还有创建3D图形队列和过滤技术。

相对于普通的渲染变换技术,透视变换是一种投射变换,渲染变换主要包括对图像的旋转,伸缩,倾斜,移动等等,其是基于改变坐标空间的数学矩阵来实现的,而投射变换是基于Silverlight内在创建的3D模型来计算的。是普通的渲染变换所做不到的。这就使得透视变换能够有更加生动的表现。

 

例子:

http://www.silverlightchina.net/html/developer/silverlight/2011/0718/9080.html


其还有更多的参数设置可以丰富图像的效果,包括

1)旋转中心参数,其有三个

 CenterOfRotationX,CenterOfRotationY,CenterOfRotationZ

前两个参数的范围是从0到1,他们代表这用户界面元素的相对宽度和相对高度,他们的默认值都是0.5。最后一个参数的值是绝对的,它的默认参数是0.

 

可以通过一个实例来演示这些参数的使用,如果你不设置这些参数中的任何一个,并且你设置图像的旋转方式是通过Z轴旋转,那么图像的最终效果类似你面对图像正中插入了一个大头针,同时沿着大头针旋转图像。如果你希望改变大头针的位置,你可以把CenterOfRotationX and CenterOfRotationY参数设置为0,此时大头针的位置就移动到了图片的最左上角。

代码如下:

<Image.Projection>  
    <PlaneProjection RotationZ="45"    
        CenterOfRotationX=
"0" CenterOfRotationY="0"  
        LocalOffsetZ=
"0" GlobalOffsetZ="0" >  
    </PlaneProjection>  
</Image.Projection>  

 

通过分析可以知道,每一个轴的位置都是由其他两个轴的焦点确定的。当你想沿着X轴旋转图像时,你可以设置CenterOfRotationY 和CenterOfRotationZ 参数来确定X轴的具体位置。同样的,当你希望沿着Y轴旋转图像时,你可以通过设置CenterOfRotationX和CenterOfRotationZ来确定Y轴的具体位置。



2)局部偏移参数和全局偏移参数:(改变图形偏移时相对的位置:整个屏幕或自己的帧位置)


http://samples.msdn.microsoft.com/Silverlight/SampleBrowser/index.htm#/?sref=LocalOffsetAnimation_1