如何在3D透视中进行Z-Index(Z-Sorting)窗口8 UIElements?

时间:2012-08-06 01:08:02

标签: c# windows-8 z-index transform uielement

一般情况下,您可以使用所谓的&#34;透视变换&#34;:<对任何UIElement应用三维效果(x,y,z,rotationX,rotationY,rotationZ ...) / p>

<Image x:Name="img1" HorizontalAlignment="Left" Height="200" Width="200" Source="img1.jpg">
        <Image.Projection>
            <PlaneProjection CenterOfRotationY="3" RotationX="40"/>
        </Image.Projection>
</Image>

但没有Z-Index(Z-Sorting)! 当UIElements重叠时,他们不能正确地渲染。

在AS3中

我使用这个函数来编写zsort对象:

public function zSort():void
    {
        var i:uint;
        var zList:Array = [];
        for (i=0; i<this.numChildren; i++)
        {
            var mtx:Matrix3D = this.getChildAt(i).transform.getRelativeMatrix3D(this.parent);
            zList.push( { sp:this.getChildAt(i), z:mtx.position.z } );
        }
        zList.sortOn("z", Array.NUMERIC | Array.DESCENDING);
        for (i=0; i<this.numChildren; i++)
        {
            this.setChildIndex(zList[i].sp, i);
        }
    }

c#中是否有类似的解决方案?或者在Windows 8中工作的东西是不同的?

我找到了这个Silverlight教程"Using projection to build a 3D carousel in Silverlight 3" 图像似乎是zindex自动女巫不是WINRT中发生的事情?

1 个答案:

答案 0 :(得分:0)

如果您将Image放在Canvas中,则可以设置zIndex dependency property