首页 > 代码库 > 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>
后台代码
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 }
样式
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>
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>
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>
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>
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>
wpf版扫雷游戏
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。