【问题标题】:How convert rotate3d xaml to c# code如何将rotate3d xaml转换为c#代码
【发布时间】:2016-04-07 04:31:37
【问题描述】:

我想在 WPF 的 3d 视图中旋转一个按钮 我用谷歌搜索并找到了这个 Link

但我想在代码后面用 c# 来做 如何将此 XAML 故事板代码转换为 c# 背后的代码,当单击按钮时将其围绕 z 轴旋转

<Viewport3D>
<Viewport3D.Camera>
    <PerspectiveCamera Position="0, 0, 4"/>
</Viewport3D.Camera>
<Viewport2DVisual3D x:Name="v2dv3d">
    <Viewport2DVisual3D.Transform>
        <RotateTransform3D>
            <RotateTransform3D.Rotation>
                <AxisAngleRotation3D Angle="0" Axis="0, 1, 0" />
            </RotateTransform3D.Rotation>
        </RotateTransform3D>
    </Viewport2DVisual3D.Transform>
    <Viewport2DVisual3D.Geometry>
        <MeshGeometry3D Positions="-1,1,0 -1,-1,0 1,-1,0 1,1,0"
                TextureCoordinates="0,0 0,1 1,1 1,0" TriangleIndices="0 1 2 0 2 3"/>
    </Viewport2DVisual3D.Geometry>

    <Viewport2DVisual3D.Material>
        <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" Brush="White"/>
    </Viewport2DVisual3D.Material>
    <Button Content="Hello, 3D">
        <Button.Triggers>
            <EventTrigger RoutedEvent="FrameworkElement.Loaded">
                <BeginStoryboard>
                    <Storyboard RepeatBehavior="Forever">
                        <Rotation3DAnimation Storyboard.TargetName="v2dv3d"
                                                Storyboard.TargetProperty="(Viewport2DVisual3D.Transform).(RotateTransform3D.Rotation)"
                                                Duration="0:0:2"
                                                BeginTime="0:0:0">
                            <Rotation3DAnimation.From>
                                <AxisAngleRotation3D Angle="0" Axis="0, 1, 0" />
                            </Rotation3DAnimation.From>
                            <Rotation3DAnimation.To>
                                <AxisAngleRotation3D Angle="90" Axis="0, 1, 0" />
                            </Rotation3DAnimation.To>
                        </Rotation3DAnimation>
                        <Rotation3DAnimation Storyboard.TargetName="v2dv3d"
                                                Storyboard.TargetProperty="(Viewport2DVisual3D.Transform).(RotateTransform3D.Rotation)"
                                                Duration="0:0:2"
                                                BeginTime="0:0:2">
                            <Rotation3DAnimation.From>
                                <AxisAngleRotation3D Angle="-90" Axis="0, 1, 0" />
                            </Rotation3DAnimation.From>
                            <Rotation3DAnimation.To>
                                <AxisAngleRotation3D Angle="0" Axis="0, 1, 0" />
                            </Rotation3DAnimation.To>
                        </Rotation3DAnimation>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Button.Triggers>
    </Button>
</Viewport2DVisual3D>
<ModelVisual3D>
    <ModelVisual3D.Content>
        <DirectionalLight Color="#FFFFFFFF" Direction="0,0,-1"/>
    </ModelVisual3D.Content>
</ModelVisual3D>

tnx

【问题讨论】:

  • 我知道如何将简单的故事板转换为 c# 代码,但我的问题是这个复杂的故事板是否存在将其转换为 c# 代码的特定技巧?

标签: c# wpf xaml


【解决方案1】:

恐怕不行,你必须在后面的代码中编写故事板所需的一切。

【讨论】:

    猜你喜欢
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多