通常,您可以使用所谓的“透视变换”将3-D效果(x,y,z,rotationX,rotationY,rotationZ ...)应用于任何UIElement

<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)!
当UIElement重叠时,它们的透视图无法正确显示。

在AS3中,我使用此功能对对象进行排序:

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中不会发生什么?

最佳答案

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

关于c# - 如何在3D透视图中对Windows 8 UIElement进行Z-索引(Z-排序)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11821488/

10-12 06:58