App.xaml

 

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

                    xmlns:local="clr-namespace:rsButton">

   <SolidColorBrush x:Key="bg" Color="Blue"/>

   <Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">

        <Setter Property="Background" Value="{StaticResource bg}"/>

        <Setter Property="Template">

            <Setter.Value>

                <ControlTemplate TargetType="{x:Type Button}">

                    <Grid>

                        <EllipseStrokeThickness="4">

                            <Ellipse.Stroke>

                                <LinearGradientBrush>

                                    <GradientStopOffset="0"Color="White"/>

                                    <GradientStopOffset="1"Color="Black"/>

                                </LinearGradientBrush>

                            </Ellipse.Stroke>

                            <Ellipse.Fill>

                                <LinearGradientBrush>

                                    <GradientStopOffset="0"Color="Silver"/>

                                    <GradientStopOffset="1"Color="White"/>

                                </LinearGradientBrush>

                            </Ellipse.Fill>

                        </Ellipse>

                        <ContentPresenterMargin="10"HorizontalAlignment="Center" VerticalAlignment="Center"/>

                    </Grid>

                </ControlTemplate>

            </Setter.Value>

        </Setter>

   </Style>

</ResourceDictionary>

 

ComDic.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

                    xmlns:local="clr-namespace:rsButton">

   <SolidColorBrush x:Key="bg" Color="Blue"/>

   <Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">

        <Setter Property="Background" Value="{StaticResource bg}"/>

        <Setter Property="Template">

            <Setter.Value>

                <ControlTemplate TargetType="{x:Type Button}">

                    <Grid>

                        <EllipseStrokeThickness="4">

                            <Ellipse.Stroke>

                                <LinearGradientBrush>

                                    <GradientStopOffset="0"Color="White"/>

                                    <GradientStopOffset="1"Color="Black"/>

                                </LinearGradientBrush>

                            </Ellipse.Stroke>

                            <Ellipse.Fill>

                                <LinearGradientBrush>

                                    <GradientStopOffset="0"Color="Silver"/>

                                    <GradientStopOffset="1"Color="White"/>

                                </LinearGradientBrush>

                            </Ellipse.Fill>

                        </Ellipse>

                        <ContentPresenterMargin="10"HorizontalAlignment="Center" VerticalAlignment="Center"/>

                    </Grid>

                </ControlTemplate>

            </Setter.Value>

        </Setter>

   </Style>

</ResourceDictionary>

 

MainWindow.xaml

<Window x:Class="rsButton.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

        xmlns:local="clr-namespace:rsButton"

        mc:Ignorable="d"

        Title="MainWindow" Height="350"Width="525">

   <DockPanel>

        <WrapPanel x:Name="panel"Width="215">

        <Button Click="Button_Click">Evan ....</Button>

        <Button>A Second Button</Button>

        <TextBlock x:Name="_text1">An editable text box</TextBlock>

        <CheckBox Content="{BindingElementName=_text1,Path=Text}"/>

        <Slider Width="75" Minimum="0" Maximum="100"Value="50"/>

   </WrapPanel>

        <Viewport3D>

            <Viewport3D.Camera>

                <PerspectiveCameraLookDirection="-.7,-.8,-1" Position="3.8,4,4"FieldOfView="17"UpDirection="0,1,0"/>

            </Viewport3D.Camera>

            <ModelVisual3D>

                <ModelVisual3D.Content>

                    <Model3DGroup>

                        <PointLightPosition="3.8,4,4"Color="White"Range="7"ConstantAttenuation="1.0"/>

                        <GeometryModel3D>

                            <GeometryModel3D.Geometry>

                                <MeshGeometry3DTextureCoordinates="0,0 1,0 0,-1 1,-1 0,0 1,0 0,-10,0" Positions="0,0,01,0,0 0,1,0 1,1,0 0,1,-1 1,1,-1 1,1,-1 1,0,-1"TriangleIndices="0,1,2 3,2,1 4,2,3 5,4,3 6,3,17,6,1"/>

                            </GeometryModel3D.Geometry>

                            <GeometryModel3D.Material>

                                <DiffuseMaterial>

                                    <DiffuseMaterial.Brush>

                                        <VisualBrushViewport="0,0,.5,.25" TileMode="Tile"Visual="{Binding ElementName=panel}"/>

                                    </DiffuseMaterial.Brush>

                                </DiffuseMaterial>

                            </GeometryModel3D.Material>

                            <GeometryModel3D.Transform>

                                <RotateTransform3DCenterX=".5"CenterY=".5"CenterZ="-.5">

                                    <RotateTransform3D.Rotation>

                                        <AxisAngleRotation3D x:Name="rotation" Axis="0,1,0"Angle="0"/>

                                    </RotateTransform3D.Rotation>

                                </RotateTransform3D>

                            </GeometryModel3D.Transform>

                        </GeometryModel3D>

                    </Model3DGroup>

                </ModelVisual3D.Content>

            </ModelVisual3D>

        </Viewport3D>

   </DockPanel>

   <Window.Triggers>

        <EventTrigger RoutedEvent="FrameworkElement.Loaded">

            <EventTrigger.Actions>

                <BeginStoryboard>

                    <BeginStoryboard.Storyboard>

                        <Storyboard>

                            <DoubleAnimationFrom="-25" To="25" Storyboard.TargetName="rotation" Storyboard.TargetProperty="Angle"

                                             AutoReverse="True" Duration="0:0:2.5"RepeatBehavior="Forever"/>

                        </Storyboard>

                    </BeginStoryboard.Storyboard>

                </BeginStoryboard>

            </EventTrigger.Actions>

        </EventTrigger>

   </Window.Triggers>

</Window>

 

效果图如下:

 

WPF绘制3D动画效果

相关文章: