`
jiasongmao
  • 浏览: 670968 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

wpf仿vista得玻璃效果按钮

    博客分类:
  • WPF
阅读更多
仿vista玻璃效果的按钮样式:

<Style x:Key="ButtonFocusVisual">
            <Setter Property="Control.Template">
                <Setter.Value>
                    <ControlTemplate>
                        <Border>
                            <Rectangle SnapsToDevicePixels="true" Stroke="Black" StrokeDashArray="1 2" StrokeThickness="1" Margin="4"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <Style x:Key="GlassButtonStyle" TargetType="{x:Type Button}">
            <Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/>
            <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
            <Setter Property="BorderBrush" Value="{x:Static Microsoft_Windows_Themes:ClassicBorderDecorator.ClassicBorderBrush}"/>
            <Setter Property="BorderThickness" Value="3"/>
            <Setter Property="HorizontalContentAlignment" Value="Center"/>
            <Setter Property="VerticalContentAlignment" Value="Center"/>
            <Setter Property="Padding" Value="0,0,1,1"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <ControlTemplate.Resources>
                            <Storyboard x:Key="Timeline1">
                                <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="grow" Storyboard.TargetProperty="(UIElement.Opacity)">
                                    <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
                                    <SplineDoubleKeyFrame KeyTime="00:00:00.2000000" Value="1"/>
                                </DoubleAnimationUsingKeyFrames>
                            </Storyboard>
                            <Storyboard x:Key="Timeline2">
                                <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="grow" Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)">
                                    <SplineColorKeyFrame KeyTime="00:00:00" Value="#00FFFFFF"/>
                                </ColorAnimationUsingKeyFrames>
                                <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="grow" Storyboard.TargetProperty="(UIElement.Opacity)">
                                    <SplineDoubleKeyFrame KeyTime="00:00:00" Value="1"/>
                                    <SplineDoubleKeyFrame KeyTime="00:00:00.2000000" Value="0"/>
                                </DoubleAnimationUsingKeyFrames>
                            </Storyboard>
                        </ControlTemplate.Resources>
                        <Border Background="#4C000000" BorderBrush="#FFFFFFFF" BorderThickness="1,1,1,1" CornerRadius="4,4,4,4">
                            <Border Background="#7F000000" BorderThickness="1,1,1,1" CornerRadius="4,4,4,4">
                                <Grid>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="0.5*"/>
                                        <RowDefinition Height="0.5*"/>
                                    </Grid.RowDefinitions>
                                    <Border Opacity="0" Margin="0,0,0,0" x:Name="grow" CornerRadius="4,4,4,4" Grid.RowSpan="2">
                                        <Border.Background>
                                            <RadialGradientBrush>
                                                <RadialGradientBrush.RelativeTransform>
                                                    <TransformGroup>
                                                        <ScaleTransform ScaleX="1.995" ScaleY="3.322"/>
                                                        <SkewTransform AngleX="0" AngleY="0"/>
                                                        <RotateTransform Angle="0"/>
                                                        <TranslateTransform X="-0.453" Y="0.1"/>
                                                    </TransformGroup>
                                                </RadialGradientBrush.RelativeTransform>
                                                <GradientStop Color="#FF26ECCD" Offset="0.249"/>
                                                <GradientStop Color="#00FFFFFF" Offset="1"/>
                                            </RadialGradientBrush>
                                        </Border.Background>
                                    </Border>
                                    <Border x:Name="shine" CornerRadius="4,4,0,0">
                                        <Border.Background>
                                            <LinearGradientBrush EndPoint="0.5,2.167" StartPoint="0.5,-3.167">
                                                <GradientStop Color="#FFFFFFFF" Offset="0"/>
                                                <GradientStop Color="#00FFFFFF" Offset="1"/>
                                                <GradientStop Color="#7DFFFFFF" Offset="0.335"/>
                                            </LinearGradientBrush>
                                        </Border.Background>
                                    </Border>
                                    <ContentPresenter HorizontalAlignment="Center" Margin="0,0,0,0" VerticalAlignment="Center" Grid.RowSpan="2"/>
                                </Grid>
                            </Border>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsPressed" Value="True">
                                <Setter Property="Visibility" TargetName="grow" Value="Hidden"/>
                                <Setter Property="Opacity" TargetName="shine" Value="0"/>
                            </Trigger>
                            <Trigger Property="IsKeyboardFocused" Value="true"/>
                            <Trigger Property="IsDefaulted" Value="true"/>
                            <Trigger Property="IsPressed" Value="true"/>
                            <Trigger Property="ToggleButton.IsChecked" Value="true"/>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                            </Trigger>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Trigger.EnterActions>
                                    <BeginStoryboard x:Name="Timeline1_BeginStoryboard" Storyboard="{StaticResource Timeline1}"/>
                                </Trigger.EnterActions>
                                <Trigger.ExitActions>
                                    <BeginStoryboard x:Name="Timeline2_BeginStoryboard" Storyboard="{StaticResource Timeline2}"/>
                                </Trigger.ExitActions>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>


<Style x:Key="GlassButton" TargetType="Button">
            <Setter Property="Background" Value="#FF1F3B53"/>
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="Padding" Value="3"/>
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="BorderBrush">
                <Setter.Value>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="#FFA3AEB9" Offset="0"/>
                        <GradientStop Color="#FF8399A9" Offset="0.375"/>
                        <GradientStop Color="#FF718597" Offset="0.375"/>
                        <GradientStop Color="#FF617584" Offset="1"/>
                    </LinearGradientBrush>
                </Setter.Value>
            </Setter>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Grid>
                            <vsm:VisualStateManager.VisualStateGroups>
                                <vsm:VisualStateGroup x:Name="CommonStates">
                                    <vsm:VisualState x:Name="Normal"/>
                                    <vsm:VisualState x:Name="MouseOver">
                                        <Storyboard>
                                            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="glow" Storyboard.TargetProperty="(UIElement.Opacity)">
                                                <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="1"/>
                                            </DoubleAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </vsm:VisualState>
                                    <vsm:VisualState x:Name="Pressed">

                                        <Storyboard>
                                            <ColorAnimationUsingKeyFrames Storyboard.TargetName="border" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)">
                                                <SplineColorKeyFrame KeyTime="0" Value="#CC000000"/>
                                            </ColorAnimationUsingKeyFrames>
                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="shine" Storyboard.TargetProperty="Opacity">
                                                <SplineDoubleKeyFrame KeyTime="0" Value="0.4"/>
                                            </DoubleAnimationUsingKeyFrames>
                                            <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="glow" 
												Storyboard.TargetProperty="(UIElement.Visibility)">
                                                <DiscreteObjectKeyFrame KeyTime="00:00:00">
                                                    <DiscreteObjectKeyFrame.Value>
                                                        <Visibility>Collapsed</Visibility>
                                                    </DiscreteObjectKeyFrame.Value>
                                                </DiscreteObjectKeyFrame>
                                            </ObjectAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </vsm:VisualState>
                                    <vsm:VisualState x:Name="Disabled">
                                        <!-- <Storyboard>
											<DoubleAnimationUsingKeyFrames Storyboard.TargetName="DisabledVisualElement" Storyboard.TargetProperty="Opacity">
												<SplineDoubleKeyFrame KeyTime="0" Value=".55"/>
											</DoubleAnimationUsingKeyFrames>
										</Storyboard> -->
                                    </vsm:VisualState>
                                </vsm:VisualStateGroup>
                                <vsm:VisualStateGroup x:Name="FocusStates">
                                    <vsm:VisualState x:Name="Focused">
                                        <!--<Storyboard>
											<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="glow" Storyboard.TargetProperty="(UIElement.Opacity)">
												<SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="1"/>
											</DoubleAnimationUsingKeyFrames>
										</Storyboard>-->
                                    </vsm:VisualState>
                                    <vsm:VisualState x:Name="Unfocused"/>
                                </vsm:VisualStateGroup>
                            </vsm:VisualStateManager.VisualStateGroups>
                            <Border BorderBrush="#FFFFFFFF" BorderThickness="1,1,1,1" CornerRadius="4,4,4,4">
                                <Border x:Name="border" Background="#7F000000" BorderBrush="#FF000000" BorderThickness="1,1,1,1" CornerRadius="4,4,4,4">
                                    <Grid>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="0.507*"/>
                                            <RowDefinition Height="0.493*"/>
                                        </Grid.RowDefinitions>
                                        <Border Opacity="0" HorizontalAlignment="Stretch" x:Name="glow" Width="Auto" Grid.RowSpan="2" CornerRadius="4,4,4,4">
                                            <Border.Background>
                                                <RadialGradientBrush>
                                                    <RadialGradientBrush.RelativeTransform>
                                                        <TransformGroup>
                                                            <ScaleTransform ScaleX="1.702" ScaleY="2.243"/>
                                                            <SkewTransform AngleX="0" AngleY="0"/>
                                                            <RotateTransform Angle="0"/>
                                                            <TranslateTransform X="-0.368" Y="-0.152"/>
                                                        </TransformGroup>
                                                    </RadialGradientBrush.RelativeTransform>
                                                    <GradientStop Color="#B28DBDFF" Offset="0"/>
                                                    <GradientStop Color="#008DBDFF" Offset="1"/>
                                                </RadialGradientBrush>
                                            </Border.Background>
                                        </Border>
                                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto" Grid.RowSpan="2"/>
                                        <Border HorizontalAlignment="Stretch" Margin="0,0,0,0" x:Name="shine" Width="Auto" CornerRadius="4,4,0,0">
                                            <Border.Background>
                                                <LinearGradientBrush EndPoint="0.494,0.889" StartPoint="0.494,0.028">
                                                    <GradientStop Color="#99FFFFFF" Offset="0"/>
                                                    <GradientStop Color="#33FFFFFF" Offset="1"/>
                                                </LinearGradientBrush>
                                            </Border.Background>
                                        </Border>
                                    </Grid>
                                </Border>
                            </Border>

                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>



使用方法:
<Button HorizontalAlignment="Right" Margin="0,31,56,0" Style="{DynamicResource GlassButtonStyle}" VerticalAlignment="Top" Width="136" Height="40" Content="Button" Foreground="#FFFFFFFF"/>

注意要添加PresentationFreamwork.Classic引用。

对于第二个样式,需要引入xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
分享到:
评论

相关推荐

    WPF玻璃效果&按钮自定义样式示例

    这种效果借鉴了微软Windows Vista及之后操作系统中广泛使用的半透明玻璃外观,它通过透明度和阴影来营造出轻盈且现代的视觉体验。在WPF中,我们可以通过设置`RenderOptions.EdgeMode`属性为`Aliased`并利用`...

    WPF超好看的玻璃按钮

    "WPF超好看的玻璃按钮"是一个示例,它模仿了Vista操作系统中的玻璃效果,为用户界面增添了现代感和透明度。 在Vista系统中,微软引入了一种称为Aero的视觉样式,其中包括半透明的玻璃效果。这种设计不仅提升了界面...

    逼真的仿Vista效果的按钮控件

    对于仿Vista的玻璃按钮,我们可能需要实现以下特性: 1. **半透明效果**:使用`Color.FromArgb()`函数创建一个具有透明度的颜色,并将其作为背景色。通过设置控件的BackColorBrush,可以实现不同程度的透明效果。 ...

    wpf圆形玻璃按钮

    "wpf圆形玻璃按钮"是利用WPF的特性制作的一款设计风格与Windows Vista相似的用户界面元素。这个项目的核心是创建一个具有透明度、反光效果以及动态视觉反馈的圆形按钮,以提升应用的现代感和用户体验。 首先,我们...

    很好的一个wpf效果demo

    在WPF中,开发者可以利用Aero主题来创建具有透明度、玻璃效果和现代感的用户界面。这可能意味着压缩包中的项目是关于如何在WPF应用程序中实现Aero样式的示例。 **知识点详细说明:** 1. **Windows Presentation ...

    漂亮的玻璃按钮

    玻璃按钮这种设计风格源自于早期Windows Vista和Windows 7的操作系统,以其半透明和反射的效果,营造出一种现代、简洁的视觉感受。这种按钮控件不仅提升了应用的外观,还能在用户交互时产生动态效果,如鼠标悬停和...

    C#玻璃按钮控件 包含整个项目源码

    本项目提供了“C#玻璃按钮控件”,这是一个特别设计的控件,其外观类似于Windows Vista和Windows 7中的玻璃效果,可以为应用程序增添现代感和美观性。 玻璃按钮控件的核心在于它的绘制机制。在C#中,控件的外观通常...

    C# Vista风格按钮

    在C#编程中,"Vista风格"和"Win7风格"按钮指的是Windows Aero主题下按钮的视觉样式,这些样式在Windows Vista和Windows 7操作系统中首次引入,以提供更现代、透明且具有玻璃质感的用户界面。这些设计极大地提升了...

    C#写的一个VISTA风格的时钟还有风格渲染器 还有玻璃按钮

    在本文中,我们将深入探讨如何使用C#编程语言创建一个具有Vista风格的时钟、风格渲染器以及玻璃按钮的应用程序。Vista是微软Windows操作系统的一个版本,它引入了全新的用户界面元素,如透明效果、玻璃特效和更现代...

    C#模仿360安全卫士玻璃按钮源码

    360安全卫士的玻璃按钮设计借鉴了Windows Vista和Windows 7中引入的 Aero 风格,这种风格强调平滑的边缘、透明度和深度感。 在C#中,我们可以利用Windows Presentation Foundation (WPF) 或者Windows Forms框架来...

    C#制作的Vista风格的按钮控件

    Vista风格的按钮控件以其独特的视觉效果和交互体验,在用户界面设计中受到欢迎,它为应用程序增添了现代感和专业性。下面,我们将讨论实现这一功能的关键技术和步骤。 首先,理解Vista风格按钮的核心特性是关键。...

    WPF与Winf特效结合测试.rar

    2. **DWM(Desktop Window Manager)特效**:Windows Vista及以后的操作系统提供了DWM,它支持诸如玻璃效果、Aero Shake、Aero Peek等高级特效。通过调用DWM API,我们可以在WPF应用中集成这些特效。 3. **动画和...

    c#登陆注册 毛玻璃效果

    这里可能使用Windows Forms或WPF来构建UI,并实现了毛玻璃效果,即 Aero 效果,提供美观的透明背景。 - **业务逻辑层(BLL层)**:处理业务规则和验证,如检查用户名是否已存在,密码是否符合安全要求等。BLL层不...

    AeroDemo透明的效果

    在Windows Presentation Foundation(WPF)中,AeroDemo是一个典型的示例,展示了如何利用Aero主题实现玻璃透明效果。Aero是Windows Vista及后续版本引入的一种用户界面风格,以其独特的透明和动态效果著称。本篇...

    Vista风格的Button(源码)

    Vista Button的核心在于使用了Windows Presentation Foundation (WPF) 或者旧版的Windows API,如User32.dll,来实现透明和玻璃效果。在WPF中,这种效果可以通过使用`BitmapEffects`、`OpacityMask`和`VisualBrush`...

    Pro WPF in C# 2010 Mar 2010

    - **窗口**: WPF中的窗口工作原理,创建不规则形状的窗口,利用Vista玻璃效果等。 #### 六、导航与部署 - **页面和导航**: 构建页面并跟踪导航历史。 - **浏览器托管的应用**: 通过网站启动WPF应用。 - **菜单、...

    一款非常好的WPF编程宝典2010 源代码

    8.4.1 使用Windows Vista玻璃效果 198 8.4.2 任务对话框和文件对话框 202 8.5 结束语 204 第9章 页面和导航 205 9.1 理解基于页面的导航 205 9.2 基于页面的用户界面 206 9.2.1 一个具有导航功能的基于 页面...

    c#vista渲染-------vista风格工具栏渲染器

    Vista引入了一种全新的UI设计,称为Aero,它包含了透明效果、玻璃质感以及更加丰富的图形元素。在C#中实现这种风格,通常涉及到对Windows Presentation Foundation (WPF)或Windows Forms的深度利用。 标题中的"C#...

    Vista风格的日历c#

    2. **绘制背景**:使用`OnPaint`事件处理程序,用`Graphics`对象绘制出类似Vista的半透明或玻璃效果的背景。可能需要使用`LinearGradientBrush`或`TextureBrush`来创建渐变和纹理效果。 3. **绘制日期**:使用`Font`...

    GlassButton

    【玻璃按钮】(GlassButton)是一种特殊的用户界面元素,它在视觉上呈现出透明或半透明的效果,类似于Windows Vista操作系统中的视觉样式。这种效果通常通过使用先进的图形编程技术来实现,如Windows Presentation ...

Global site tag (gtag.js) - Google Analytics