WPF开发者QQ群: 340500857
欢迎转发、分享、点赞,谢谢大家~。
效果预览:
一、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
Github:https://github.com/yanjinhuagood
出处:https://www.cnblogs.com/yanjinhua
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
转载请著名作者 出处 https://github.com/yanjinhuagood