我有一个2D画布,我想沿x轴旋转。我后来想要沿z轴设置物体的运动。在WPF中沿x轴旋转画布
使用CSS,沿x轴旋转很简单: transform: rotateX(30deg);
,z轴上的平移也是如此。
Here是我如何旋转XAML画布的演示。
如何在XAML/WPF中实现相同的效果?我尝试使用Viewport3D
和Viewport2DVisual3D
作为应用3D转换的起点。但是,画布一旦放置就不会渲染。我不知道是否需要调整材质照明或几何图形。我应该去做什么最好的方法?有没有我可以用来简化这项工作的工具?
我试过使用How to rotate 2D UIElement around a 3D axis (Y)?和How to rotate 2D UIElement around a 3D axis (Y)?的代码。我似乎无法让我的代码与画布一起工作。
编辑:
我作为起点碱使用的代码在http://www.codeproject.com/Articles/34391/Rotating-WPF-Content-in-D-Space(部分 “ContentControl3D内部件”)尝试:
<Viewport2DVisual3D>
<Viewport2DVisual3D.Geometry>
<MeshGeometry3D TriangleIndices="0,1,2 2,3,0" TextureCoordinates="0,1 1,1 1,0 0,0" Positions="-1,-1,0 1,-1,0 1,1,0 -1,1,0" />
</Viewport2DVisual3D.Geometry>
<Viewport2DVisual3D.Transform>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Angle="180" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Viewport2DVisual3D.Transform>
<Viewport2DVisual3D.Material>
<DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" Brush="White" />
</Viewport2DVisual3D.Material>
<Viewport2DVisual3D.Visual>
<Border BorderBrush="Transparent" BorderThickness="1">
<Canvas>
<!-- ... -->
</Canvas>
</Border>
</Viewport2DVisual3D.Visual>
</Viewport2DVisual3D>
画布不呈现。我也尝试使用其他包装,以及我提供的其他链接,并没有运气让视觉渲染。
你试图实现什么样的效果(示例图片)?这听起来像是用'RenderTransform'很容易完成的。 –
同时显示一些代码 – lokusking
@ManfredRadlwimmer我添加了一个演示,我如何旋转它https://jsfiddle.net/33t0ov24/ – Glasspopsicle