【问题标题】:Rotate canvas along x axis in WPF在 WPF 中沿 x 轴旋转画布
【发布时间】:2016-07-15 22:03:13
【问题描述】:

我有一个想要沿 x 轴旋转的 2D 画布。稍后我想为对象沿 z 轴的移动设置动画。

使用 CSS,沿 x 轴旋转很简单: transform: rotateX(30deg);,z 轴上的平移也是如此。

Here 演示了我想如何旋转 XAML 画布。

如何在 XAML/WPF 中实现相同的效果?我尝试使用Viewport3DViewport2DVisual3D 作为应用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 完成。
  • 请显示一些代码
  • @ManfredRadlwimmer 我添加了一个演示我想如何旋转它jsfiddle.net/33t0ov24

标签: wpf xaml


【解决方案1】:

From this example page,添加摄像头和一些灯光(灯光可选):

<Viewport3D>
    <Viewport3D.Camera>
        <PerspectiveCamera Position="0, 0, 4"/>
    </Viewport3D.Camera>

    <ModelVisual3D>
        <ModelVisual3D.Content>
            <DirectionalLight Color="#FFFFFFFF" Direction="0,0,-1"></DirectionalLight>
        </ModelVisual3D.Content>
    </ModelVisual3D>

    <Viewport2DVisual3D>
    ...
    </Viewport2DVisual3D>

180度的旋转角度真的很大,我觉得那是把你的边框一直向后翻转。

【讨论】:

  • 照明是可选的。但是轴似乎很重要&lt;AxisAngleRotation3D Axis="1,0,0" Angle="-80" /&gt;
  • 是的,180度的角度也很大,90多就露背了吧?
猜你喜欢
  • 1970-01-01
  • 2017-09-03
  • 2017-10-26
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-29
相关资源
最近更新 更多