首页 > 代码库 > wpf版扫雷游戏

wpf版扫雷游戏

 

近来觉得wpf做出来的界面很拉风,于是就去自学,发现感觉很不错,可是属性N多,太多了,而且质料也少,很多不会用,只会写基本的操作,样式直接百度黏贴在自己改改,于是属于自己的扫雷就出来了,也只能做这等游戏了,用的知识少,代码也不多,还能帮助自己提高熟练度,最后的感言还是多做才是王道啊,码农就是苦逼啊,wpf属性真是多啊,不过还是得学啊,下面也没什么好说的了,贴代码,扫雷也就一个递归而已

XAML

 1 <Window x:Class="SweepMineUI.MainWindow" 2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4         Title="究极版扫雷" Height="650" Width="750" Background="Wheat" > 5     <!--WindowStyle="None" ResizeMode="NoResize" AllowsTransparency="True" Background="{x:Null}" Topmost="True"--> 6  7     <Window.Resources> 8         <ResourceDictionary> 9             <ResourceDictionary.MergedDictionaries>10                 <ResourceDictionary Source="/style/b.xaml"/>11                 <ResourceDictionary Source="/style/lab.xaml"/>12                 <ResourceDictionary Source="/style/txt.xaml"/>13                 <ResourceDictionary Source="/style/grid.xaml"/>14                 <ResourceDictionary Source="/style/canvas.xaml"/>15             </ResourceDictionary.MergedDictionaries>16         </ResourceDictionary>17         <!-- 引用外部资源文件 -->18     </Window.Resources>19     <Window.Triggers>20         <!--启动调用-->21         <EventTrigger RoutedEvent="FrameworkElement.Loaded">22             <BeginStoryboard Storyboard="{StaticResource fanzhuan}"/>23             <!--调用的效果-->24         </EventTrigger>25     </Window.Triggers>26     <Grid Margin="0,0,2,2" x:Name="grid" HorizontalAlignment="Center" VerticalAlignment="Center">27         <!--<Grid.RenderTransform>28             内部样式书写29         </Grid.RenderTransform>-->30         <Label Margin="60,30,560,540" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="26" Content="游戏区" />31         <Label Margin="206,35,434,540" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="14" Content="未挖:" Name="lw"/>32         <Label Margin="335,35,305,540" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="14" Content="已挖:" Name="ly"/>33         <Label Margin="460,35,180,540" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="14" Content="工具:" Name="lg"/>34         <Button Height="23" HorizontalAlignment="Center" Margin="600,70,65,524" Name="btnInitial" VerticalAlignment="Center" Width="75" Click="btnInitial_Click" Content="初级"/>35         <Button Height="23" HorizontalAlignment="Center" Margin="600,110,65,479" Name="btnCenter" VerticalAlignment="Center" Width="75" Click="btnCenter_Click" Content="中级" />36         <Button Height="23" HorizontalAlignment="Center" Margin="600,150,65,426" Name="btnSenior" VerticalAlignment="Center" Width="75" Click="btnSenior_Click" Content="高级"/>37         <Button Height="23" HorizontalAlignment="Center" Margin="600,200,65,371" Name="btnEnd" VerticalAlignment="Center" Width="75" Click="btnEnd_Click" Content="终级"/>38         <Button Height="23" HorizontalAlignment="Center" Margin="600,250,65,304" Name="btnWa" VerticalAlignment="Center" Width="75" Click="btnWa_Click" Content="挖雷"/>39         <TextBox Height="23" HorizontalAlignment="Center" Margin="600,300,60,259" Name="txtKL" VerticalAlignment="Center" Width="70" Text="0302" RenderTransformOrigin="0.573,-4.696" />40         <Button Height="23" HorizontalAlignment="Center" Margin="604,330,65,220" Name="btnZB" VerticalAlignment="Center" Width="76" Click="btnZB_Click" Content="作弊"/>41         <Button Height="23" HorizontalAlignment="Center" Margin="605,380,65,176" Name="btnExit" VerticalAlignment="Center" Width="75" Click="btnExit_Click" Content="退出"/>42         <Canvas Margin="75,78,164,39" Name="canSweep" Height="500" Width="500" HorizontalAlignment="Center" VerticalAlignment="Center"/>43     </Grid>44 </Window>
View Code

后台代码

  1 using System;  2 using System.Collections.Generic;  3 using System.Linq;  4 using System.Text;  5 using System.Threading.Tasks;  6 using System.Windows;  7 using System.Windows.Controls;  8 using System.Windows.Data;  9 using System.Windows.Documents; 10 using System.Windows.Input; 11 using System.Windows.Media; 12 using System.Windows.Media.Animation; 13 using System.Windows.Media.Imaging; 14 using System.Windows.Navigation; 15 using System.Windows.Shapes; 16  17 namespace SweepMineUI 18 { 19     /// <summary> 20     /// MainWindow.xaml 的交互逻辑 21     /// </summary> 22     public partial class MainWindow : Window 23     { 24         private int[] SweepNum = null;//雷集合索引 25         private int GNum { get; set; }//挖雷工具数量 26         private bool BeginWa = false;//是否执行挖雷 27         private Storyboard Storyboard { get; set; } 28         public MainWindow() 29         { 30             InitializeComponent(); 31             LoadSweepArray(5); 32             CreateButton(10, 10); 33         } 34         /// <summary> 35         /// 初始化雷的数量 36         /// </summary> 37         /// <param name="Length">雷的数量</param> 38         private void LoadSweepArray(int Length)  39         { 40             SweepNum = new int[Length]; 41             for (int i = 0; i < SweepNum.Length;i++ ) 42             { 43                 SweepNum[i] = -1; 44             } 45         } 46         private void btnInitial_Click(object sender, RoutedEventArgs e) 47         { 48             LoadSweepArray(5); 49             CreateButton(10, 10); 50         } 51         private void btnCenter_Click(object sender, RoutedEventArgs e)  52         { 53             LoadSweepArray(10); 54             CreateButton(12,12); 55         } 56         private void btnSenior_Click(object sender, RoutedEventArgs e) 57         { 58             LoadSweepArray(15); 59             CreateButton(14, 14); 60         } 61         private void btnEnd_Click(object sender, RoutedEventArgs e) 62         { 63             LoadSweepArray(20); 64             CreateButton(15, 15); 65         } 66         private void btnZB_Click(object sender, RoutedEventArgs e) 67         { 68             if (txtKL.Text == "0302") 69                 btn_ClickZB(); 70             else 71                 MessageBox.Show("口令无效"); 72         } 73         private void btnExit_Click(object sender, RoutedEventArgs e) 74         { 75             this.Close(); 76         } 77         private void btn_ClickZB()  78         { 79             foreach(Control c in canSweep.Children) 80             { 81                 if(c is Button) 82                 { 83                     Button b = c as Button; 84                     if(b.IsEnabled && b.Content.ToString() == "") 85                         b.Content = b.Tag; 86                 } 87             } 88         } 89         /// <summary> 90         /// 查找游戏区内所有未挖的雷的数量 91         /// </summary> 92         /// <returns>雷的数量</returns> 93         private int GetSweepCount()  94         { 95             int count = 0; 96             foreach(Control c in canSweep.Children) 97             { 98                 if(c is Button) 99                 {100                     Button b = c as Button;101                     //if (b.Content.ToString() == "★")102                     if (b.Tag.ToString() == "")103                         count++;104                 }105             }106             return count;107         }108         /// <summary>109         /// 创建雷110         /// </summary>111         /// <param name="x">x轴列数</param>112         /// <param name="y">y轴列数</param>113         private void CreateButton(int x, int y)114         {115             canSweep.Children.Clear();116             //四个方向的边距最大能多出1117             //double width = (500 - (x + 1) * 1) / x;118             //double height = (500 - (y + 1) * 1) / y;119             double width = 500/x;120             double height = 500/y;121             canSweep.Width = width * x + x;//自动调整游戏窗口的大小122             canSweep.Height = height * y + y;123             List<Point> Sweeps = new List<Point>();124             for (int i = 0; i < x; i++)125             {126                 for (int j = 0; j < y; j++)127                 {128                     Button bt = new Button()129                     {130                         Width = width,131                         Height = height,132                         HorizontalAlignment = HorizontalAlignment.Center,133                         VerticalAlignment = VerticalAlignment.Center,134                         Content = "",135                         Tag = "",136                         Name = "bs" + i,137                         Background = Brushes.Gray,138                         Margin = new Thickness(i * 1, j * 1, i * 1, j * 1)//左上右下139                     };140                     Sweeps.Add(new Point(bt.Margin.Left, bt.Margin.Top));141                     bt.Click += btnSweeps_Click;142                     Canvas.SetTop(bt, j * height);143                     Canvas.SetLeft(bt, i * width);144                     canSweep.Children.Add(bt);145                     btnSweeps_ClickBegin(bt);146                 }147             }148             LoadSweeps(Sweeps);149         }150         /// <summary>151         /// 初始化雷区152         /// </summary>153         /// <param name="Sweeps">雷集合</param>154         private void LoadSweeps(List<Point> Sweeps)155         {156             GNum = SweepNum.Length;157             string tag = "工具:";158             lg.Content = tag+GNum;//初始化挖雷次数159             Random random = new Random();160             for (int i = 0; i < SweepNum.Length; i++)//生成不同的随机数161             {162                 int s = random.Next(0, Sweeps.Count);//随机数取值范围163                 bool b = true;164                 foreach (int num in SweepNum)165                 {166                     if (num == s)//表示有重复的随机数167                     {168                         --i;169                         b = false;170                         break;171                     }172                 }173                 if (b)174                     SweepNum[i] = s;175             }176             for (int i = 0; i < SweepNum.Length; i++)177             {178                 foreach (Control c in canSweep.Children)179                 {180                     if (c is Button)181                     {182                         Button btn = c as Button;183                         //btn.Content = btn.Margin.Left + "|" + btn.Margin.Top;184                         if (btn.Margin.Left == Sweeps[SweepNum[i]].X && btn.Margin.Top == Sweeps[SweepNum[i]].Y)185                         {186                             //btn.Content = "★";187                             btn.Tag = "";188                             break;189                         }190                     }191                 }192             }193             LoadSweepTags();194             lw.Content = " 未挖:" + GetSweepCount() + " ";195         }196         /// <summary>197         /// 查找指定区域内雷的数量198         /// </summary>199         /// <param name="btn">判断的区域</param>200         /// <returns>雷数量count</returns>201         private int GetSweepCount(Button btn)202         {203             double left = btn.Margin.Left - 1;204             double top = btn.Margin.Top - 1;205             double right = btn.Margin.Right + 1;206             double bottom = btn.Margin.Bottom + 1;207             int count = 0;208             foreach (Control c in canSweep.Children)209             {210                 if (c is Button)211                 {212                     Button b = c as Button;213                     if (b.Margin.Left >= left && b.Margin.Top >= top && b.Margin.Right <= right && b.Margin.Bottom <= bottom)214                     {215                         //if (b.Content.ToString() == "★")216                         if (b.Tag.ToString() == "")217                             count++;218                     }219                 }220             }221             return count;222         }223         /// <summary>224         /// 初始化雷区附近数量值225         /// </summary>226         private void LoadSweepTags()227         {228             int count = 0;229             foreach (Control cl in canSweep.Children)230             {231                 if (cl is Button)232                 {233                     Button btn = cl as Button;234                     //if (btn.Content.ToString() == "★")235                     if (btn.Tag.ToString() == "")//是雷区则开始初始化数量值236                     {237                         foreach (Control c in canSweep.Children)238                         {239                             if (c is Button)240                             {241                                 Button b = c as Button;242                                 double left = btn.Margin.Left - 1;243                                 double top = btn.Margin.Top - 1;244                                 double right = btn.Margin.Right + 1;245                                 double bottom = btn.Margin.Bottom + 1;246                                 count = GetSweepCount(b);//得到该区域周围雷的数量247                                 if (b.Margin.Left >= left && b.Margin.Top >= top && b.Margin.Right <= right && b.Margin.Bottom <= bottom)248                                 {249                                     //if (b.Content.ToString() != "★")250                                         //b.Content = count;251                                     if (b.Tag.ToString() != "")252                                         b.Tag = count;253                                 }254                             }255                         }256                     }257                 }258             }259         }260         private void btnSweeps_ClickBegin(Button btn) 261         {262             Storyboard = FindResource("btnFZs") as Storyboard;//查找动画263             btn.BeginStoryboard(Storyboard);//启动动画264         }265         /// <summary>266         /// 雷单击事件267         /// </summary>268         /// <param name="sender"></param>269         /// <param name="e"></param>270         private void btnSweeps_Click(object sender, RoutedEventArgs e)271         {272             Button btn = (e.Source as Button);273             btnSweeps_ClickBegin(btn);274             if (GNum < 0)275             {276                 btnWa.IsEnabled = false;277                 MessageBox.Show("GAME OVER");278                 GameOver();279                 return;280             }281             if (!BeginWa)282             {283                 if (IsCorrect(btn))284                 {285                     ReturnFindSweeps(btn);286                 }287             }288             else 289             {290                 if (btn.Tag.ToString() == "")291                 {292                     btn.Content = btn.Tag;293                     btn.Foreground = Brushes.RoyalBlue;294                     btn.Tag = "";295                     btn.Content = btn.Tag;296                     lw.Content = " 未挖:" + GetSweepCount() + " ";297                     ly.Content = " 以挖:" + (SweepNum.Length - GetSweepCount());298                     if (GetSweepCount() == 0) 299                     {300                         MessageBox.Show("过关");301                     }302                 }303                 else 304                 {305                     btn.Content = btn.Tag;306                 }307             }308             btn.Click -= btnSweeps_Click;//让单击的按钮失效309             BeginWa = false;//修改挖雷状态310         }311         /// <summary>312         /// 刷新挖雷工具313         /// </summary>314         private void SetLgContent()315         {316             if (GNum > 0)317             {318                 GNum--;319                 string tag = "工具:";320                 lg.Content = tag + GNum;//刷新挖雷次数321             }322         }323         /// <summary>324         /// 挖雷325         /// </summary>326         /// <param name="sender"></param>327         /// <param name="e"></param>328         private void btnWa_Click(object sender, RoutedEventArgs e)329         {330             if (!BeginWa)331             {332                 Button btn = (e.Source as Button);333                 btn.Click -= btnSweeps_Click;//让单击的按钮失效334                 BeginWa = true;335                 SetLgContent();336             }337         }338         /// <summary>339         /// 游戏结束340         /// </summary>341         private void GameOver() 342         {343             foreach (var c in canSweep.Children)344             {345                 if (c is Button)346                 {347                     Button b = c as Button;348                     b.IsEnabled = false;349                 }350             }351         }352         /// <summary>353         /// 判断是否正确354         /// </summary>355         /// <param name="button">单击的Button控件</param>356         /// <returns>是否可以继续游戏</returns>357         private bool IsCorrect(Button button)358         {359             bool b = true;360             //if(button.Content.ToString() == "★")361             if (button.Tag.ToString() == "")362             {363                 b = false;364                 button.Content = button.Tag;365                 MessageBox.Show("GAME OVER");366                 GameOver();367             }368             return b;369         }370         /// <summary>371         /// 找雷372         /// </summary>373         /// <param name="btn">单击的雷</param>374         private void ReturnFindSweeps(Button btn) 375         {376             377             if (btn.Tag.ToString() == "" || btn.Tag.ToString() == " ")//表示该区域为安全区域378             {379                 double left = btn.Margin.Left - 1;380                 double top = btn.Margin.Top - 1;381                 double right = btn.Margin.Right + 1;382                 double bottom = btn.Margin.Bottom + 1;383                 foreach (Control c in canSweep.Children)384                 {385                     if (c is Button)386                     {387                         Button b = c as Button;388                         if (b.Margin.Left >= left && b.Margin.Top >= top && b.Margin.Right <= right && b.Margin.Bottom <= bottom)389                         {390                             //if (b.Content.ToString() != "")391                             if (b.Tag.ToString() != "")//表示附近无雷392                             {393                                 if(b.Tag.ToString() == "")394                                     b.Content = ""; 395                                 else if(b.Tag.ToString() != "")396                                     b.Content = b.Tag;397                                 continue;398                             }399                             else400                             {401                                 b.Click -= btnSweeps_Click;//让按钮失效402                                 b.Content = "";403                                 b.Tag = " ";//表示已经侦查过的区域404                                 //b.Style = new System.Windows.Style();//清除外部样式405                                 b.Style = FindResource("btnClickIng") as Style;406                                 ReturnFindSweeps(b);//递归调用407                             }408                         }409                     }410                 }411             }412             else//如果是雷所属的区域,则只显示该一块区域413             {414                 //btn.Background = myBrush;415                 btn.Content = btn.Tag;416                 btn.Click -= btnSweeps_Click;//让按钮失效417             }418         }419     }420 }
View Code

样式

  1 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  2                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">  3     <Storyboard x:Key="btnFZs">  4         <PointAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransformOrigin)" >  5             <EasingPointKeyFrame KeyTime="0" Value=http://www.mamicode.com/"0.5,0.5"/>  6         </PointAnimationUsingKeyFrames>  7         <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" >  8             <EasingDoubleKeyFrame KeyTime="0" Value=http://www.mamicode.com/"-1">  9                 <EasingDoubleKeyFrame.EasingFunction> 10                     <CubicEase EasingMode="EaseOut"/> 11                 </EasingDoubleKeyFrame.EasingFunction> 12             </EasingDoubleKeyFrame> 13             <EasingDoubleKeyFrame KeyTime="0:0:1" Value=http://www.mamicode.com/"1"> 14                 <EasingDoubleKeyFrame.EasingFunction> 15                     <CubicEase EasingMode="EaseOut"/> 16                 </EasingDoubleKeyFrame.EasingFunction> 17             </EasingDoubleKeyFrame> 18         </DoubleAnimationUsingKeyFrames> 19     </Storyboard> 20     <Storyboard x:Key="btns" BeginTime="0:0:1"> 21  22     </Storyboard> 23     <!--表示资源--> 24     <Style TargetType="Button"> 25         <Setter Property="Foreground" Value=http://www.mamicode.com/"Black"/> 26         <Setter Property="RenderTransform"> 27             <Setter.Value> 28                 <!--实现对元素拉伸,旋转,扭曲等效果--> 29                 <TransformGroup> 30                     <!--能够让某对象的缩放、旋转、扭曲等变化效果合并起来使用--> 31                     <ScaleTransform/> 32                     <!--能够让某对象产生缩放变化--> 33                     <SkewTransform/> 34                     <!--能够让某对象产生扭曲变化--> 35                     <RotateTransform/> 36                     <!--能够让某对象产生旋转变化,根据中心点进行顺时针旋转或逆时针旋转--> 37                     <TranslateTransform/> 38                     <!--能够让某对象的缩放、旋转、扭曲等变化效果合并起来使用--> 39                     <MatrixTransform/> 40                     <!--能够让某对象通过矩阵算法实现更为复杂的变形--> 41                 </TransformGroup> 42             </Setter.Value> 43         </Setter> 44         <!--设置属性--> 45         <Setter Property="Template"> 46             <Setter.Value> 47                 <ControlTemplate TargetType="Button"> 48                     <!--设置模版--> 49                     <Border x:Name="back" Opacity="0.9" CornerRadius="3"> 50                         <!--<Border.Background> 51                             <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 52                                 --> 53                         <!--渐变的范围--> 54                         <!-- 55                                 <GradientStop Color="Bisque" Offset="0"/> 56                                 --> 57                         <!--渐变对位置--> 58                         <!-- 59                                 <GradientStop Color="#1111" Offset="0.5"/> 60                                 <GradientStop Color="#1111" Offset="1"/> 61                             </LinearGradientBrush> 62                         </Border.Background>--> 63                         <!--如果要多次设置背景就要在次添加一个border--> 64                         <Border x:Name="fore" BorderThickness="1" CornerRadius="3" BorderBrush="#5555"> 65                             <Border.Background> 66                                 <!--线性渐变画刷--> 67                                 <!--<LinearGradientBrush StartPoint="0,0.5" EndPoint="0.5,1"> 68                                         <GradientStop Color="#6fff" Offset="0.5"/> 69                                         <GradientStop Color="#1111" Offset="0.9"/> 70                                     </LinearGradientBrush>--> 71                                 <!--<RadialGradientBrush GradientOrigin="0.5,0.5" Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5"> 72                                         <GradientStop Color="#1111" Offset="0.5"/> 73                                         <GradientStop Color="#6fff" Offset="0.4"/> 74                                     </RadialGradientBrush>--> 75                                 <DrawingBrush> 76                                     <DrawingBrush.Drawing> 77                                         <GeometryDrawing> 78                                             <!-- 绘制矩形 --> 79                                             <GeometryDrawing.Geometry> 80                                                 <RectangleGeometry RadiusX="0.02" RadiusY="0.5" 81                                                        Rect="0.05,0.05,0.8,0.8" /> 82                                             </GeometryDrawing.Geometry> 83                                             <!-- 矩形填充色 --> 84                                             <GeometryDrawing.Brush> 85                                                 <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 86                                                     <!--<GradientStop Color="#1111" Offset="0" /> 87                                                     <GradientStop Color="White" Offset="1" />--> 88                                                 </LinearGradientBrush> 89                                             </GeometryDrawing.Brush> 90                                             <!-- 矩形边框 --> 91                                             <GeometryDrawing.Pen> 92                                                 <Pen Thickness="0.05"> 93                                                     <!--绘制的范围--> 94                                                     <Pen.Brush> 95                                                         <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 96                                                             <GradientStop Color="#1111" Offset="0" /> 97                                                             <GradientStop Color="#ffff" Offset="0" /> 98                                                         </LinearGradientBrush> 99                                                     </Pen.Brush>100                                                 </Pen>101                                             </GeometryDrawing.Pen>102                                         </GeometryDrawing>103                                     </DrawingBrush.Drawing>104                                 </DrawingBrush>105                             </Border.Background>106                             <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>107                             <!--使用原来控件设置的属性内容-->108                         </Border>109                     </Border>110                 </ControlTemplate>111             </Setter.Value>112         </Setter>113         <Style.Triggers>114             <Trigger Property="IsMouseOver" Value=http://www.mamicode.com/"True">115                 <Setter Property="Foreground" Value=http://www.mamicode.com/"Red"/>116                 <Setter Property="Background" Value=http://www.mamicode.com/"Purple"/>117             </Trigger>118         </Style.Triggers>119     </Style>120     <Style TargetType="Button" x:Key="btnClickIng">121         <Setter Property="Template">122             <Setter.Value>123                 <ControlTemplate TargetType="Button">124                     <Border Opacity="0.9" CornerRadius="3">125                         <Border.Background>126                             <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">127                                 <GradientStop Color="Gray" Offset="0.5"/>128                             </LinearGradientBrush>129                         </Border.Background>130                     </Border>131                 </ControlTemplate>132             </Setter.Value>133         </Setter>134         <Style.Triggers>135             <Trigger Property="IsMouseOver" Value=http://www.mamicode.com/"True">136                 <Setter Property="Foreground" Value=http://www.mamicode.com/"Red"/>137                 <Setter Property="Background" Value=http://www.mamicode.com/"Purple"/>138             </Trigger>139         </Style.Triggers>140     </Style>141 </ResourceDictionary>
View Code
 1 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 2                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 3     <Style TargetType="Canvas"> 4         <Setter Property="Background"> 5             <Setter.Value> 6                 <RadialGradientBrush  7         GradientOrigin="0.5,0.5"  8         Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5"> 9                     <RadialGradientBrush.GradientStops>10                         <GradientStop Color="Tan" Offset="1" />11                     </RadialGradientBrush.GradientStops>12                 </RadialGradientBrush>13             </Setter.Value>14         </Setter>15         <Style.Triggers>16             <Trigger Property="IsMouseOver" Value=http://www.mamicode.com/"True">17                 18             </Trigger>19         </Style.Triggers>20     </Style>21 </ResourceDictionary>
View Code
 1 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 2                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 3     <Storyboard x:Key="fanzhuan"><!--定义旋转功能--> 4         <PointAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransformOrigin)" Storyboard.TargetName="grid"> 5             <EasingPointKeyFrame KeyTime="0" Value=http://www.mamicode.com/"0.5,0.5"/> 6         </PointAnimationUsingKeyFrames> 7         <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="grid"> 8             <EasingDoubleKeyFrame KeyTime="0" Value=http://www.mamicode.com/"-1"> 9                 <EasingDoubleKeyFrame.EasingFunction>10                     <CubicEase EasingMode="EaseOut"/>11                 </EasingDoubleKeyFrame.EasingFunction>12             </EasingDoubleKeyFrame>13             <EasingDoubleKeyFrame KeyTime="0:0:1" Value=http://www.mamicode.com/"1">14                 <EasingDoubleKeyFrame.EasingFunction>15                     <CubicEase EasingMode="EaseOut"/>16                 </EasingDoubleKeyFrame.EasingFunction>17             </EasingDoubleKeyFrame>18         </DoubleAnimationUsingKeyFrames>19     </Storyboard>20     <Style TargetType="Grid">21         <Setter Property="RenderTransform">22             <Setter.Value>23                 <!--实现对元素拉伸,旋转,扭曲等效果-->24                 <TransformGroup>25                     <!--能够让某对象的缩放、旋转、扭曲等变化效果合并起来使用-->26                     <ScaleTransform/>27                     <!--能够让某对象产生缩放变化-->28                     <SkewTransform/>29                     <!--能够让某对象产生扭曲变化-->30                     <RotateTransform/>31                     <!--能够让某对象产生旋转变化,根据中心点进行顺时针旋转或逆时针旋转-->32                     <TranslateTransform/>33                     <!--能够让某对象的缩放、旋转、扭曲等变化效果合并起来使用-->34                     <MatrixTransform/>35                     <!--能够让某对象通过矩阵算法实现更为复杂的变形-->36                 </TransformGroup>37             </Setter.Value>38         </Setter>39         <Setter Property="Background">40             <Setter.Value>41                 <DrawingBrush>42                     <DrawingBrush.Drawing>43                         <GeometryDrawing>44                             <!-- 绘制矩形 -->45                             <GeometryDrawing.Geometry>46                                 <RectangleGeometry RadiusX="0.05" RadiusY="1"47                                                        Rect="0,0,1,1" />48                             </GeometryDrawing.Geometry>49                             <!-- 矩形填充色 -->50                             <GeometryDrawing.Brush>51                                 <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">52                                     <GradientStop Color="BurlyWood" Offset="0" />53                                     <GradientStop Color="LemonChiffon" Offset="1" />54                                 </LinearGradientBrush>55                             </GeometryDrawing.Brush>56                             <!-- 矩形边框 -->57                             <GeometryDrawing.Pen>58                                 <Pen Thickness="0.05">59                                     <!--绘制的范围-->60                                     <Pen.Brush>61                                         <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">62                                             <GradientStop Color="Black" Offset="0.01" />63                                             <GradientStop Color="Plum" Offset="0.8" />64                                         </LinearGradientBrush>65                                     </Pen.Brush>66                                 </Pen>67                             </GeometryDrawing.Pen>68                         </GeometryDrawing>69                     </DrawingBrush.Drawing>70                 </DrawingBrush>71             </Setter.Value>72         </Setter>73     </Style>74 </ResourceDictionary>
View Code
 1 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 2                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 3     <Style TargetType="Label"> 4         <Setter Property="Background"> 5             <Setter.Value> 6                 <DrawingBrush> 7                     <DrawingBrush.Drawing> 8                         <GeometryDrawing> 9                             <!-- 绘制矩形 -->10                             <GeometryDrawing.Geometry>11                                 <RectangleGeometry RadiusX="0.1" RadiusY="0.07"12                                                        Rect="1,1,1,1" />13                             </GeometryDrawing.Geometry>14                             <!-- 矩形填充色 -->15                             <GeometryDrawing.Brush>16                                 <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">17                                     <GradientStop Color="#1111" Offset="1" />18                                     <GradientStop Color="#ffff" Offset="0.1" />19                                 </LinearGradientBrush>20                             </GeometryDrawing.Brush>21                             <!-- 矩形边框 -->22                             <GeometryDrawing.Pen>23                                 <Pen Thickness="0.05">24                                     <!--绘制的范围-->25                                     <Pen.Brush>26                                         <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">27                                             <GradientStop Color="#1111" Offset="0" />28                                             <GradientStop Color="#ffff" Offset="0.5" />29                                         </LinearGradientBrush>30                                     </Pen.Brush>31                                 </Pen>32                             </GeometryDrawing.Pen>33                         </GeometryDrawing>34                     </DrawingBrush.Drawing>35                 </DrawingBrush>36             </Setter.Value>37         </Setter>38     </Style>39 </ResourceDictionary>
View Code
 1 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 2                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 3     <Style TargetType="TextBox"> 4         <Setter Property="Background"> 5             <Setter.Value> 6                 <DrawingBrush> 7                     <DrawingBrush.Drawing> 8                         <GeometryDrawing> 9                             <!-- 绘制矩形 -->10                             <GeometryDrawing.Geometry>11                                 <RectangleGeometry RadiusX="0.8" RadiusY="0"12                                                        Rect="1,1,0.5,0.9" />13                             </GeometryDrawing.Geometry>14                             <!-- 矩形边框 -->15                             <GeometryDrawing.Pen>16                                 <Pen Thickness="1">17                                     <!--绘制的范围-->18                                     <Pen.Brush>19                                         <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">20                                             <GradientStop Color="#1111" Offset="0" />21                                         </LinearGradientBrush>22                                     </Pen.Brush>23                                 </Pen>24                             </GeometryDrawing.Pen>25                         </GeometryDrawing>26                     </DrawingBrush.Drawing>27                 </DrawingBrush>28             </Setter.Value>29         </Setter>30     </Style>31 </ResourceDictionary>
View Code

 

wpf版扫雷游戏