zoukankan      html  css  js  c++  java
  • WPF实现Android(3D)菜单翻转动画

    WPF开发者QQ群: 340500857 

    微信公众号:WPF开发者      或者搜索:WPFDevelopers

    每日一笑

    我催小李还债:“我最近手头紧,其他人都还钱了,你有啥表示?”

    小李:“心疼。”

    我怒了:“就这?”

    小李说:“别人都只会拿钱敷衍你,不像我,只会心疼哥哥。”

    效果预览

    一、MainWindow.xaml代码如下:

    <Grid>
            <Grid.Background>
                <ImageBrush ImageSource="background.png"/>
            </Grid.Background>
            <Border Width="400" Height="235" Background="#F9F7F9"
                    VerticalAlignment="Top" Margin="10,0" SnapsToDevicePixels="True">
                    <UniformGrid Columns="5" VerticalAlignment="Bottom">
                        <Viewport3D Height="80" Width="80">
                            <Viewport3D.Camera>
                                <OrthographicCamera LookDirection="0,0,-100" Position="0,0,100" UpDirection="0,1,0"/>
                            </Viewport3D.Camera>
                            <Viewport3D.Children>
                                <ModelVisual3D>
                                    <ModelVisual3D.Content>
                                        <AmbientLight Color="White"/>
                                    </ModelVisual3D.Content>
                                </ModelVisual3D>
                                <ContainerUIElement3D>
                                    <ContainerUIElement3D.Transform>
                                        <RotateTransform3D>
                                            <RotateTransform3D.Rotation>
                                                <AxisAngleRotation3D Angle="0" Axis="1 0 0"/>
                                            </RotateTransform3D.Rotation>
                                        </RotateTransform3D>
                                    </ContainerUIElement3D.Transform>
    
                                    <Viewport2DVisual3D>
                                        <Viewport2DVisual3D.Material>
                                            <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True"/>
                                        </Viewport2DVisual3D.Material>
                                        <Viewport2DVisual3D.Geometry>
                                            <MeshGeometry3D Positions="-1,1,1    -1,-1,1   1,-1,1    1,1,1"
                                        TextureCoordinates="0,0   0,1     1,1  1,0"
                                        TriangleIndices="0 1 2 0 2 3"/>
                                        </Viewport2DVisual3D.Geometry>
                                        <Border Background="#5B31AD" Height="110" Width="110" CornerRadius="0,0,0,30">
                                            <Path Data="{StaticResource PathBuildingRegular}" Fill="#FFFF"
                                              Stretch="Fill"  Width="40" Height="40"/>
                                        </Border>
                                    </Viewport2DVisual3D>
                                </ContainerUIElement3D>
                            </Viewport3D.Children>
                        </Viewport3D>
    
                        <Viewport3D Height="80" Width="80">
                            <Viewport3D.Camera>
                                <OrthographicCamera LookDirection="0,0,-100" Position="0,0,100" UpDirection="0,1,0"/>
                            </Viewport3D.Camera>
                            <Viewport3D.Children>
                                <ModelVisual3D>
                                    <ModelVisual3D.Content>
                                        <AmbientLight Color="White"/>
                                    </ModelVisual3D.Content>
                                </ModelVisual3D>
                                <ContainerUIElement3D>
                                    <ContainerUIElement3D.Transform>
                                        <RotateTransform3D>
                                            <RotateTransform3D.Rotation>
                                                <AxisAngleRotation3D Angle="0" Axis="1 0 0"/>
                                            </RotateTransform3D.Rotation>
                                        </RotateTransform3D>
                                    </ContainerUIElement3D.Transform>
    
                                    <Viewport2DVisual3D>
                                        <Viewport2DVisual3D.Material>
                                            <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True"/>
                                        </Viewport2DVisual3D.Material>
                                        <Viewport2DVisual3D.Geometry>
                                            <MeshGeometry3D Positions="-1,1,1    -1,-1,1   1,-1,1    1,1,1"
                                        TextureCoordinates="0,0   0,1     1,1  1,0"
                                        TriangleIndices="0 1 2 0 2 3"/>
                                        </Viewport2DVisual3D.Geometry>
                                        <Border Background="#8E1FA4" Height="110" Width="110">
                                            <Path Data="{StaticResource PathAlarmMD}" Fill="#FFFF"
                                              Stretch="Fill"  Width="40" Height="40"/>
                                        </Border>
                                    </Viewport2DVisual3D>
    
                                  
                                </ContainerUIElement3D>
                            </Viewport3D.Children>
                        </Viewport3D>
    
                        <Viewport3D Height="80" Width="80">
                            <Viewport3D.Camera>
                                <OrthographicCamera LookDirection="0,0,-100" Position="0,0,100" UpDirection="0,1,0"/>
                            </Viewport3D.Camera>
                            <Viewport3D.Children>
                                <ModelVisual3D>
                                    <ModelVisual3D.Content>
                                        <AmbientLight Color="White"/>
                                    </ModelVisual3D.Content>
                                </ModelVisual3D>
                                <ContainerUIElement3D>
                                    <ContainerUIElement3D.Transform>
                                        <RotateTransform3D>
                                            <RotateTransform3D.Rotation>
                                                <AxisAngleRotation3D Angle="0" Axis="1 0 0"/>
                                            </RotateTransform3D.Rotation>
                                        </RotateTransform3D>
                                    </ContainerUIElement3D.Transform>
    
                                    <Viewport2DVisual3D>
                                        <Viewport2DVisual3D.Material>
                                            <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True"/>
                                        </Viewport2DVisual3D.Material>
                                        <Viewport2DVisual3D.Geometry>
                                            <MeshGeometry3D Positions="-1,1,1    -1,-1,1   1,-1,1    1,1,1"
                                        TextureCoordinates="0,0   0,1     1,1  1,0"
                                        TriangleIndices="0 1 2 0 2 3"/>
                                        </Viewport2DVisual3D.Geometry>
                                        <Border Background="#3A7DFE" Height="110" Width="110">
                                            <Path Data="{StaticResource PathFriend}" Fill="#FFFF"
                                              Stretch="Fill"  Width="40" Height="30"/>
                                        </Border>
                                    </Viewport2DVisual3D>
    
                                  
                                </ContainerUIElement3D>
                            </Viewport3D.Children>
                        </Viewport3D>
    
                        <Viewport3D Height="80" Width="80" x:Name="viewport3DBus" MouseEnter="viewport3DBus_MouseEnter">
                            <Viewport3D.Camera>
                                <OrthographicCamera LookDirection="0,0,-100" Position="0,0,100" UpDirection="0,1,0"/>
                            </Viewport3D.Camera>
                            <Viewport3D.Children>
                                <ModelVisual3D>
                                    <ModelVisual3D.Content>
                                        <AmbientLight Color="White"/>
                                    </ModelVisual3D.Content>
                                </ModelVisual3D>
                                <ContainerUIElement3D>
                                    <ContainerUIElement3D.Transform>
                                        <RotateTransform3D>
                                            <RotateTransform3D.Rotation>
                                                <AxisAngleRotation3D x:Name="axis3dBus" Angle="0" Axis="1 0 0"/>
                                            </RotateTransform3D.Rotation>
                                        </RotateTransform3D>
                                    </ContainerUIElement3D.Transform>
    
                                    <Viewport2DVisual3D>
                                        <Viewport2DVisual3D.Material>
                                            <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True"/>
                                        </Viewport2DVisual3D.Material>
                                        <Viewport2DVisual3D.Geometry>
                                            <MeshGeometry3D Positions="-1,1,1    -1,-1,1   1,-1,1    1,1,1"
                                        TextureCoordinates="0,0   0,1     1,1  1,0"
                                        TriangleIndices="0 1 2 0 2 3"/>
                                        </Viewport2DVisual3D.Geometry>
                                        <Border Background="#5EECA6" Height="110" Width="110">
                                            <Path Data="{StaticResource PathBus}" Fill="#FFFF"
                                              Stretch="Fill"  Width="35" Height="40"/>
                                        </Border>
                                    </Viewport2DVisual3D>
    
                                    <Viewport2DVisual3D>
                                        <Viewport2DVisual3D.Material>
                                            <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True"/>
                                        </Viewport2DVisual3D.Material>
                                        <Viewport2DVisual3D.Geometry>
                                            <MeshGeometry3D Positions="-1,1,1  1,1,1   1,1,-1   -1,1,-1"
                                        TextureCoordinates="0,0   0,1   1,1  1,0"
                                        TriangleIndices="0 1 2 0 2 3"/>
                                        </Viewport2DVisual3D.Geometry>
                                        <Border Background="#41A545" Height="110" Width="110" RenderTransformOrigin="0.5,0.5">
                                            <Border.RenderTransform>
                                                <TransformGroup>
                                                    <RotateTransform Angle="90"/>
                                                </TransformGroup>
                                            </Border.RenderTransform>
                                            <StackPanel VerticalAlignment="Center">
                                                <Path Data="{StaticResource PathBus}" Fill="#FFFF"
                                              Stretch="Fill"  Width="35" Height="40"/>
                                                <TextBlock Text="Bus" HorizontalAlignment="Center" FontSize="14" Foreground="White"/>
                                            </StackPanel>
                                        </Border>
                                    </Viewport2DVisual3D>
                                </ContainerUIElement3D>
                            </Viewport3D.Children>
                        </Viewport3D>                    
                    </UniformGrid>
                </Border>
                <Border Width="450" BorderBrush="#181618" 
                    BorderThickness="25,0,25,25" Height="260"
                    CornerRadius="0,0,50,50" Background="{x:Null}"
                    VerticalAlignment="Top" Margin="10,0" SnapsToDevicePixels="True">
                    <Border.Effect>
                        <DropShadowEffect Color="White" BlurRadius="10" Direction="300" ShadowDepth="0" />
                    </Border.Effect>
                </Border>
            <StackPanel>
                <TextBlock Text="微信号公众号:WPFDevelopers" HorizontalAlignment="Center"
                       VerticalAlignment="Top" Margin="0,20" FontSize="20" FontWeight="Black"/>
                <TextBlock Text="源码获取关注公众号后输入:3DBar 即可获取" HorizontalAlignment="Center"
                       VerticalAlignment="Top" Margin="0,20" FontSize="14" FontWeight="Black"/>
            </StackPanel>        
        </Grid>

    二、MainWindow.xaml.cs代码如下:

    DoubleAnimation animation = null;
    private void viewport3DBus_MouseEnter(object sender, MouseEventArgs e)
            {
                if (animation != null) return;
    
                animation = new DoubleAnimation
                {
                    Duration = new Duration(TimeSpan.FromSeconds(1.5)),
                    From = 0,
                    To = 90,
                    EasingFunction = new BackEase { EasingMode = EasingMode.EaseInOut },
                };
                animation.Completed += (s, e1) =>
                {
                    animation = null;
                };
                axis3dBus.BeginAnimation(AxisAngleRotation3D.AngleProperty, animation);
            }

    更多教程欢迎关注微信公众号:

    源码获取关注微信公众号输入:“3DBar” 即可获取源码。

    WPF开发者QQ群: 340500857 

    blogs: https://www.cnblogs.com/yanjinhua/p/14345136.html

    Github:https://github.com/yanjinhuagood

    作者:驚鏵

    出处:https://www.cnblogs.com/yanjinhua

    版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

    转载请著名作者 出处 https://github.com/yanjinhuagood

    源码地址:https://github.com/yanjinhuagood/3DAnimationNavigationBar

  • 相关阅读:
    项目笔记:统计页面功能实现
    jquery easyui datagrid实现数据改动
    Skia图片解码模块流程分析
    TRIZ的成功案例
    基于HTML5的Web SCADA工控移动应用
    webservices系列(五)——javaweb整合Axis2及多service配置
    org.hibernate.PropertyValueException: not-null property references a null or transient value: model.
    线程池和异步线程
    [leetcode]Implement strStr()
    Python工作日类库Busines Holiday介绍
  • 原文地址:https://www.cnblogs.com/yanjinhua/p/14774032.html
Copyright © 2011-2022 走看看