收藏 分销(赏)

WPF实现超酷样式按钮.doc

上传人:xrp****65 文档编号:6768388 上传时间:2024-12-21 格式:DOC 页数:17 大小:303.50KB 下载积分:10 金币
下载 相关 举报
WPF实现超酷样式按钮.doc_第1页
第1页 / 共17页
WPF实现超酷样式按钮.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
首先打开 Microsoft Visual Studio 2008 ,新建一个WPF项目,在上面随便放几个按钮: WPF_Button1.png(4.31 K) 2008-7-15 13:40:47 然后给各个按钮设置不同的背景颜色: WPF_Button2.png(16.98 K) 2008-7-15 13:40:47 设置好之后就是这样啦: WPF_Button3.png(7.58 K) 2008-7-15 13:40:47 然后我们就开始在 App.xaml 文件中定义按钮样式了: WPF_Button4.png(19.99 K) 2008-7-15 13:40:47 定义的样式代码如下: 1. <Application x:Class="WPFButton.App" 2.     xmlns=" 3.     xmlns:x=" 4.     StartupUri="Window1.xaml"> 5.     <Application.Resources> 6.         <!--定义按钮样式--> 7.         <Style TargetType="Button"> 8.             <Setter Property="Foreground" Value="Black"/> 9.             <!--修改模板属性--> 10.             <Setter Property="Template"> 11.                 <Setter.Value> 12.                     <!--控件模板--> 13.                     <ControlTemplate TargetType="Button"> 14.                         <!--背景色--> 15.                         <Border x:Name="back" Opacity="0.8" CornerRadius="3"> 16.                             <Border.BitmapEffect> 17.                                 <OuterGlowBitmapEffect Opacity="0.7" GlowSize="0" GlowColor="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(Button.Background).(SolidColorBrush.Color)}" /> 18.                             </Border.BitmapEffect> 19.                             <Border.Background> 20.                                 <LinearGradientBrush StartPoint="0,0" EndPoint="0,1.5"> 21.                                     <GradientBrush.GradientStops> 22.                                         <GradientStopCollection> 23.                                             <GradientStop Color="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(Button.Background).(SolidColorBrush.Color)}" Offset="0"/> 24.                                             <GradientStop Color="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(Button.Background).(SolidColorBrush.Color)}" Offset="0.4"/> 25.                                             <GradientStop Color="#FFF" Offset="1"/> 26.                                         </GradientStopCollection> 27.                                     </GradientBrush.GradientStops> 28.                                 </LinearGradientBrush> 29.                             </Border.Background> 30.                             <!--前景色及边框--> 31.                             <Border x:Name="fore" BorderThickness="1" CornerRadius="3" BorderBrush="#5555"> 32.                                 <Border.Background> 33.                                     <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 34.                                         <GradientBrush.GradientStops> 35.                                             <GradientStopCollection> 36.                                                 <GradientStop Color="#6FFF" Offset="0.5"/> 37.                                                 <GradientStop Color="#1111" Offset="0.51"/> 38.                                             </GradientStopCollection> 39.                                         </GradientBrush.GradientStops> 40.                                     </LinearGradientBrush> 41.                                 </Border.Background> 42.                                 <!--按钮内容--> 43.                                 <ContentPresenter x:Name="content" Horiz VerticalAlignment="Center" C> 44.                                     <ContentPresenter.BitmapEffect> 45.                                         <DropShadowBitmapEffect Color="#000" Direction="-90" ShadowDepth="2" Softness="0.1" Opacity="0.3" /> 46.                                     </ContentPresenter.BitmapEffect> 47.                                 </ContentPresenter> 48.                             </Border> 49.                         </Border> 50.                         <!--触发器--> 51.                         <ControlTemplate.Triggers> 52.                             <!--鼠标移入移出--> 53.                             <Trigger Property="IsMouseOver" Value="True"> 54.                                 <Trigger.EnterActions> 55.                                     <BeginStoryboard> 56.                                         <Storyboard> 57.                                             <DoubleAnimation To="6" Duration="0:0:0.2" Storyboard.TargetName="back" Storyboard.TargetProperty="(Border.BitmapEffect).(OuterGlowBitmapEffect.GlowSize)" /> 58.                                             <ColorAnimation To="#AFFF" BeginTime="0:0:0.2" Duration="0:0:0.2" Storyboard.TargetName="fore" Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[0].(GradientStop.Color)" /> 59.                                             <ColorAnimation To="#3FFF" BeginTime="0:0:0.2" Duration="0:0:0.2" Storyboard.TargetName="fore" Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[1].(GradientStop.Color)" /> 60.                                         </Storyboard> 61.                                     </BeginStoryboard> 62.                                 </Trigger.EnterActions> 63.                                 <Trigger.ExitActions> 64.                                     <BeginStoryboard> 65.                                         <Storyboard> 66.                                             <DoubleAnimation Duration="0:0:0.2" Storyboard.TargetName="back" Storyboard.TargetProperty="(Border.BitmapEffect).(OuterGlowBitmapEffect.GlowSize)" /> 67.                                             <ColorAnimation Duration="0:0:0.2" Storyboard.TargetName="fore" Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[0].(GradientStop.Color)" /> 68.                                             <ColorAnimation Duration="0:0:0.2" Storyboard.TargetName="fore" Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[1].(GradientStop.Color)" /> 69.                                         </Storyboard> 70.                                     </BeginStoryboard> 71.                                 </Trigger.ExitActions> 72.                             </Trigger> 73.                             <!--按钮按下弹起--> 74.                             <Trigger Property="IsPressed" Value="True"> 75.                                 <Trigger.EnterActions> 76.                                     <BeginStoryboard> 77.                                         <Storyboard> 78.                                             <DoubleAnimation To="3" Duration="0:0:0.1" Storyboard.TargetName="back" Storyboard.TargetProperty="(Border.BitmapEffect).(OuterGlowBitmapEffect.GlowSize)" /> 79.                                             <ColorAnimation To="#3AAA" Duration="0:0:0.1" Storyboard.TargetName="fore" Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[0].(GradientStop.Color)" /> 80.                                             <ColorAnimation To="#2111" Duration="0:0:0.1" Storyboard.TargetName="fore" Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[1].(GradientStop.Color)" /> 81.                                         </Storyboard> 82.                                     </BeginStoryboard> 83.                                 </Trigger.EnterActions> 84.                                 <Trigger.ExitActions> 85.                                     <BeginStoryboard> 86.                                         <Storyboard> 87.                                             <DoubleAnimation Duration="0:0:0.1" Storyboard.TargetName="back" Storyboard.TargetProperty="(Border.BitmapEffect).(OuterGlowBitmapEffect.GlowSize)" /> 88.                                             <ColorAnimation Duration="0:0:0.1" Storyboard.TargetName="fore" Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[0].(GradientStop.Color)" /> 89.                                             <ColorAnimation Duration="0:0:0.1" Storyboard.TargetName="fore" Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[1].(GradientStop.Color)" /> 90.                                         </Storyboard> 91.                                     </BeginStoryboard> 92.                                 </Trigger.ExitActions> 93.                             </Trigger> 94.                             <!--按钮失效--> 95.                             <Trigger Property="IsEnabled" Value="False"> 96.                                 <Setter Property="Foreground" Value="#B444"/> 97.                                 <Trigger.EnterActions> 98.                                     <BeginStoryboard> 99.                                         <Storyboard> 100.                                             <DoubleAnimation To="0" Duration="0:0:0.3" Storyboard.TargetName="back" Storyboard.TargetProperty="(Border.BitmapEffect).(OuterGlowBitmapEffect.GlowSize)" /> 101.                                             <DoubleAnimation To="1" Duration="0:0:0.1" Storyboard.TargetName="content" Storyboard.TargetProperty="(ContentPresenter.BitmapEffect).(DropShadowBitmapEffect.Opacity)" /> 102.                                             <DoubleAnimation To="-135" Duration="0:0:0.1" Storyboard.TargetName="content" Storyboard.TargetProperty="(ContentPresenter.BitmapEffect).(DropShadowBitmapEffect.Direction)" /> 103.                                             <ColorAnimation To="#FFF" Duration="0:0:0.3" Storyboard.TargetName="content" Storyboard.TargetProperty="(ContentPresenter.BitmapEffect).(DropShadowBitmapEffect.Color)" /> 104.                                             <ColorAnimation To="#D555" Duration="0:0:0.3" Storyboard.TargetName="fore" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" /> 105.                                             <ColorAnimation To="#CEEE" Duration="0:0:0.3" Storyboard.TargetName="fore" Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[0].(GradientStop.Color)" /> 106.                                             <ColorAnimation To="#CDDD" Duration="0:0:0.3" Storyboard.TargetName="fore" Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[1].(GradientStop.Color)" /> 107.                                         </Storyboard> 108.                                     </BeginStoryboard> 109.                                 </Trigger.EnterActions> 110.                                 <Trigger.ExitActions> 111.                                     <BeginStoryboard> 112.                                         <Storyboard> 113.                                             <DoubleAnimation Duration="0:0:0.1" Storyboard.TargetName="back" Storyboard.TargetProperty="(Border.BitmapEffect).(OuterGlowBitmapEffect.GlowSize)" /> 114.                                             <DoubleAnimation Duration="0:0:0.1" Storyboard.TargetName="content" Storyboard.TargetProperty="(ContentPresenter.BitmapEffect).(DropShadowBitmapEffect.Opacity)" /> 115.                                             <DoubleAnimation Duration="0:0:0.1" Storyboard.TargetName="content" Storyboard.TargetProperty="(ContentPresenter.BitmapEffect).(DropShadowBitmapEffect.Direction)" /> 116.                                             <ColorAnimation Duration="0:0:0.1" Storyboard.TargetName="content" Storyboard.TargetProperty="(ContentPresenter.BitmapEffect).(DropShadowBitmapEffect.Color)" /> 117.                                             <ColorAnimation Duration="0:0:0.1" Storyboard.TargetName="fore" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" /> 118.                                             <ColorAnimation Duration="0:0:0.1" Storyboard.TargetName="fore" Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[0].(GradientStop.Color)" /> 119.                                             <ColorAnimation Duration="0:0:0.1" Storyboard.TargetName="fore" Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[1].(GradientStop.Color)" /> 120.                                         </Storyboard> 121.                                     </BeginStoryboard> 122.                                 </Trigger.ExitActions> 123.                             </Trigger> 124.                         </ControlTemplate.Triggers> 125.                     </ControlTemplate> 126.                 </Setter.Value> 127.             </Setter> 128.         </Style> 129.     </Application.Resources> 130. </Application> 复制代码 看了先不要头大,我们先看看最终效果,然后回过头来再解释代码: WPF_Button5.png(11.38 K) 2008-7-15 13:40:47 这是常规样式 WPF_Button6.png(16.25 K) 2008-7-15 13:40:47 这个是鼠标移到上面时的样式 WPF_Button7.png(15.85 K) 2008-7-15 13:40:47 这个是鼠标点击时的样式 WPF_Button8.png(18.79 K) 2008-7-15 13:40:47 还有就是按钮失效时的样式 效果还算不错吧,下面来讲解代码喽,头晕的同学可以现在就收拾东西回家了哈。 WPF_Button9.png(27.65 K) 2008-7-15 13:40:47 我们先来看这个命名为“back”的 Border 元素,它用它的 Background 属性充当了整个按钮的背景色。 1. <Border.Background> 2.                                 <LinearGradientBrush StartPoint="0,0" EndPoint="0,1.5"> 3.                                     <GradientBrush.GradientStops> 4.                                         <GradientStopCollection> 5.                                             <GradientStop Color="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(Button.Background).(SolidColorBrush.Color)}" Offset="0"/> 6.                                             <GradientStop Color="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(Button.Background).(SolidColorBrush.Color)}" Offset="0.4"/> 7.                                             <GradientStop Color="#FFF" Offset="1"/> 8.                                         </GradientStopCollection> 9.                                     </GradientBrush.GradientStops> 10.                                 </LinearGradientBrush> 11.                             </Border.Background> 复制代码 其背景所用的是一个渐变笔刷,起始值和中间值都是引用的按钮本身的背景色,就是我们之前设置过的颜色啦,终止值是白色,这样通过位置调整,我们可以在按钮最下部产生一些向白色的过度色彩效果。 1. <Border.BitmapEffect> 2.                                 <OuterGlowBitmapEffect Opacity="0.7" GlowSize="0" GlowColor="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(Button.Background).(SolidColorBrush.Color)}" /> 3.                             </Border.BitmapEffect> 复制代码 它的 BitmapEffect 属性我们设置了一个大小为 0 的外发光效果,平常是看不见这效果的,在这里预先设置好,是为了在鼠标移入、按下时实现动画使用。 WPF_Button10.png(20.28 K) 2008-7-15 13:40:47 再来看看这个命名为“fore”的 Border 元素,它实现的是按钮的边框和高亮反光效果,我为它设置了一个半透明的黑色1像素边框,使得这个边框的色彩可以和背景色混合起来。 1.                                 <Border.Background> 2.                                     <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 3.                                         <GradientBrush.GradientStops> 4.                  
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服