通常,您可以使用所谓的“透视变换”将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/