wpf版扫雷游戏

2023-07-29,,

近来觉得wpf做出来的界面很拉风,自己也很喜欢搞些小游戏,感觉这做出来的会很炫,很装逼,(满足自己的一点小小的虚荣心)于是就去自学,发现感觉很不错,可是属性N多,太多了,而且质料也少,很多不会用,只会写基本的操作,样式直接百度黏贴在自己改改,于是属于自己的扫雷就出来了,也只能做这等游戏了,用的知识少,代码也不多,wpf属性真是多啊,不过还是得学啊,下面也没什么好说的了,贴代码,扫雷也就一个递归而已,而且vs真心的开发神器啊

XAML

 <Window x:Class="SweepMineUI.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="究极版扫雷" Height="" Width="" Background="Wheat" >
<!--WindowStyle="None" ResizeMode="NoResize" AllowsTransparency="True" Background="{x:Null}" Topmost="True"--> <Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/style/b.xaml"/>
<ResourceDictionary Source="/style/lab.xaml"/>
<ResourceDictionary Source="/style/txt.xaml"/>
<ResourceDictionary Source="/style/grid.xaml"/>
<ResourceDictionary Source="/style/canvas.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<!-- 引用外部资源文件 -->
</Window.Resources>
<Window.Triggers>
<!--启动调用-->
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource fanzhuan}"/>
<!--调用的效果-->
</EventTrigger>
</Window.Triggers>
<Grid Margin="0,0,2,2" x:Name="grid" HorizontalAlignment="Center" VerticalAlignment="Center">
<!--<Grid.RenderTransform>
内部样式书写
</Grid.RenderTransform>-->
<Label Margin="60,30,560,540" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="" Content="游戏区" />
<Label Margin="206,35,434,540" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="" Content="未挖:" Name="lw"/>
<Label Margin="335,35,305,540" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="" Content="已挖:" Name="ly"/>
<Label Margin="460,35,180,540" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="" Content="工具:" Name="lg"/>
<Button Height="" HorizontalAlignment="Center" Margin="600,70,65,524" Name="btnInitial" VerticalAlignment="Center" Width="" Click="btnInitial_Click" Content="初级"/>
<Button Height="" HorizontalAlignment="Center" Margin="600,110,65,479" Name="btnCenter" VerticalAlignment="Center" Width="" Click="btnCenter_Click" Content="中级" />
<Button Height="" HorizontalAlignment="Center" Margin="600,150,65,426" Name="btnSenior" VerticalAlignment="Center" Width="" Click="btnSenior_Click" Content="高级"/>
<Button Height="" HorizontalAlignment="Center" Margin="600,200,65,371" Name="btnEnd" VerticalAlignment="Center" Width="" Click="btnEnd_Click" Content="终级"/>
<Button Height="" HorizontalAlignment="Center" Margin="600,250,65,304" Name="btnWa" VerticalAlignment="Center" Width="" Click="btnWa_Click" Content="挖雷"/>
<TextBox Height="" HorizontalAlignment="Center" Margin="600,300,60,259" Name="txtKL" VerticalAlignment="Center" Width="" Text="" RenderTransformOrigin="0.573,-4.696" />
<Button Height="" HorizontalAlignment="Center" Margin="604,330,65,220" Name="btnZB" VerticalAlignment="Center" Width="" Click="btnZB_Click" Content="作弊"/>
<Button Height="" HorizontalAlignment="Center" Margin="605,380,65,176" Name="btnExit" VerticalAlignment="Center" Width="" Click="btnExit_Click" Content="退出"/>
<Canvas Margin="75,78,164,39" Name="canSweep" Height="" Width="" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Window>

后台代码

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes; namespace SweepMineUI
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
private int[] SweepNum = null;//雷集合索引
private int GNum { get; set; }//挖雷工具数量
private bool BeginWa = false;//是否执行挖雷
private Storyboard Storyboard { get; set; }
public MainWindow()
{
InitializeComponent();
LoadSweepArray();
CreateButton(, );
}
/// <summary>
/// 初始化雷的数量
/// </summary>
/// <param name="Length">雷的数量</param>
private void LoadSweepArray(int Length)
{
SweepNum = new int[Length];
for (int i = ; i < SweepNum.Length;i++ )
{
SweepNum[i] = -;
}
}
private void btnInitial_Click(object sender, RoutedEventArgs e)
{
LoadSweepArray();
CreateButton(, );
}
private void btnCenter_Click(object sender, RoutedEventArgs e)
{
LoadSweepArray();
CreateButton(,);
}
private void btnSenior_Click(object sender, RoutedEventArgs e)
{
LoadSweepArray();
CreateButton(, );
}
private void btnEnd_Click(object sender, RoutedEventArgs e)
{
LoadSweepArray();
CreateButton(, );
}
private void btnZB_Click(object sender, RoutedEventArgs e)
{
if (txtKL.Text == "")
btn_ClickZB();
else
MessageBox.Show("口令无效");
}
private void btnExit_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void btn_ClickZB()
{
foreach(Control c in canSweep.Children)
{
if(c is Button)
{
Button b = c as Button;
if(b.IsEnabled && b.Content.ToString() == "")
b.Content = b.Tag;
}
}
}
/// <summary>
/// 查找游戏区内所有未挖的雷的数量
/// </summary>
/// <returns>雷的数量</returns>
private int GetSweepCount()
{
int count = ;
foreach(Control c in canSweep.Children)
{
if(c is Button)
{
Button b = c as Button;
//if (b.Content.ToString() == "★")
if (b.Tag.ToString() == "★")
count++;
}
}
return count;
}
/// <summary>
/// 创建雷
/// </summary>
/// <param name="x">x轴列数</param>
/// <param name="y">y轴列数</param>
private void CreateButton(int x, int y)
{
canSweep.Children.Clear();
//四个方向的边距最大能多出1
//double width = (500 - (x + 1) * 1) / x;
//double height = (500 - (y + 1) * 1) / y;
double width = /x;
double height = /y;
canSweep.Width = width * x + x;//自动调整游戏窗口的大小
canSweep.Height = height * y + y;
List<Point> Sweeps = new List<Point>();
for (int i = ; i < x; i++)
{
for (int j = ; j < y; j++)
{
Button bt = new Button()
{
Width = width,
Height = height,
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Center,
Content = "",
Tag = "",
Name = "bs" + i,
Background = Brushes.Gray,
Margin = new Thickness(i * , j * , i * , j * )//左上右下
};
Sweeps.Add(new Point(bt.Margin.Left, bt.Margin.Top));
bt.Click += btnSweeps_Click;
Canvas.SetTop(bt, j * height);
Canvas.SetLeft(bt, i * width);
canSweep.Children.Add(bt);
btnSweeps_ClickBegin(bt);
}
}
LoadSweeps(Sweeps);
}
/// <summary>
/// 初始化雷区
/// </summary>
/// <param name="Sweeps">雷集合</param>
private void LoadSweeps(List<Point> Sweeps)
{
GNum = SweepNum.Length;
string tag = "工具:";
lg.Content = tag+GNum;//初始化挖雷次数
Random random = new Random();
for (int i = ; i < SweepNum.Length; i++)//生成不同的随机数
{
int s = random.Next(, Sweeps.Count);//随机数取值范围
bool b = true;
foreach (int num in SweepNum)
{
if (num == s)//表示有重复的随机数
{
--i;
b = false;
break;
}
}
if (b)
SweepNum[i] = s;
}
for (int i = ; i < SweepNum.Length; i++)
{
foreach (Control c in canSweep.Children)
{
if (c is Button)
{
Button btn = c as Button;
//btn.Content = btn.Margin.Left + "|" + btn.Margin.Top;
if (btn.Margin.Left == Sweeps[SweepNum[i]].X && btn.Margin.Top == Sweeps[SweepNum[i]].Y)
{
//btn.Content = "★";
btn.Tag = "★";
break;
}
}
}
}
LoadSweepTags();
lw.Content = " 未挖:" + GetSweepCount() + " ";
}
/// <summary>
/// 查找指定区域内雷的数量
/// </summary>
/// <param name="btn">判断的区域</param>
/// <returns>雷数量count</returns>
private int GetSweepCount(Button btn)
{
double left = btn.Margin.Left - ;
double top = btn.Margin.Top - ;
double right = btn.Margin.Right + ;
double bottom = btn.Margin.Bottom + ;
int count = ;
foreach (Control c in canSweep.Children)
{
if (c is Button)
{
Button b = c as Button;
if (b.Margin.Left >= left && b.Margin.Top >= top && b.Margin.Right <= right && b.Margin.Bottom <= bottom)
{
//if (b.Content.ToString() == "★")
if (b.Tag.ToString() == "★")
count++;
}
}
}
return count;
}
/// <summary>
/// 初始化雷区附近数量值
/// </summary>
private void LoadSweepTags()
{
int count = ;
foreach (Control cl in canSweep.Children)
{
if (cl is Button)
{
Button btn = cl as Button;
//if (btn.Content.ToString() == "★")
if (btn.Tag.ToString() == "★")//是雷区则开始初始化数量值
{
foreach (Control c in canSweep.Children)
{
if (c is Button)
{
Button b = c as Button;
double left = btn.Margin.Left - ;
double top = btn.Margin.Top - ;
double right = btn.Margin.Right + ;
double bottom = btn.Margin.Bottom + ;
count = GetSweepCount(b);//得到该区域周围雷的数量
if (b.Margin.Left >= left && b.Margin.Top >= top && b.Margin.Right <= right && b.Margin.Bottom <= bottom)
{
//if (b.Content.ToString() != "★")
//b.Content = count;
if (b.Tag.ToString() != "★")
b.Tag = count;
}
}
}
}
}
}
}
private void btnSweeps_ClickBegin(Button btn)
{
Storyboard = FindResource("btnFZs") as Storyboard;//查找动画
btn.BeginStoryboard(Storyboard);//启动动画
}
/// <summary>
/// 雷单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSweeps_Click(object sender, RoutedEventArgs e)
{
Button btn = (e.Source as Button);
btnSweeps_ClickBegin(btn);
if (GNum < )
{
btnWa.IsEnabled = false;
MessageBox.Show("GAME OVER");
GameOver();
return;
}
if (!BeginWa)
{
if (IsCorrect(btn))
{
ReturnFindSweeps(btn);
}
}
else
{
if (btn.Tag.ToString() == "★")
{
btn.Content = btn.Tag;
btn.Foreground = Brushes.RoyalBlue;
btn.Tag = "☆";
btn.Content = btn.Tag;
lw.Content = " 未挖:" + GetSweepCount() + " ";
ly.Content = " 以挖:" + (SweepNum.Length - GetSweepCount());
if (GetSweepCount() == )
{
MessageBox.Show("过关");
}
}
else
{
btn.Content = btn.Tag;
}
}
btn.Click -= btnSweeps_Click;//让单击的按钮失效
BeginWa = false;//修改挖雷状态
}
/// <summary>
/// 刷新挖雷工具
/// </summary>
private void SetLgContent()
{
if (GNum > )
{
GNum--;
string tag = "工具:";
lg.Content = tag + GNum;//刷新挖雷次数
}
}
/// <summary>
/// 挖雷
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnWa_Click(object sender, RoutedEventArgs e)
{
if (!BeginWa)
{
Button btn = (e.Source as Button);
btn.Click -= btnSweeps_Click;//让单击的按钮失效
BeginWa = true;
SetLgContent();
}
}
/// <summary>
/// 游戏结束
/// </summary>
private void GameOver()
{
foreach (var c in canSweep.Children)
{
if (c is Button)
{
Button b = c as Button;
b.IsEnabled = false;
}
}
}
/// <summary>
/// 判断是否正确
/// </summary>
/// <param name="button">单击的Button控件</param>
/// <returns>是否可以继续游戏</returns>
private bool IsCorrect(Button button)
{
bool b = true;
//if(button.Content.ToString() == "★")
if (button.Tag.ToString() == "★")
{
b = false;
button.Content = button.Tag;
MessageBox.Show("GAME OVER");
GameOver();
}
return b;
}
/// <summary>
/// 找雷
/// </summary>
/// <param name="btn">单击的雷</param>
private void ReturnFindSweeps(Button btn)
{ if (btn.Tag.ToString() == "" || btn.Tag.ToString() == " ")//表示该区域为安全区域
{
double left = btn.Margin.Left - ;
double top = btn.Margin.Top - ;
double right = btn.Margin.Right + ;
double bottom = btn.Margin.Bottom + ;
foreach (Control c in canSweep.Children)
{
if (c is Button)
{
Button b = c as Button;
if (b.Margin.Left >= left && b.Margin.Top >= top && b.Margin.Right <= right && b.Margin.Bottom <= bottom)
{
//if (b.Content.ToString() != "")
if (b.Tag.ToString() != "")//表示附近无雷
{
if(b.Tag.ToString() == "")
b.Content = "";
else if(b.Tag.ToString() != "★")
b.Content = b.Tag;
continue;
}
else
{
b.Click -= btnSweeps_Click;//让按钮失效
b.Content = "";
b.Tag = " ";//表示已经侦查过的区域
//b.Style = new System.Windows.Style();//清除外部样式
b.Style = FindResource("btnClickIng") as Style;
ReturnFindSweeps(b);//递归调用
}
}
}
}
}
else//如果是雷所属的区域,则只显示该一块区域
{
//btn.Background = myBrush;
btn.Content = btn.Tag;
btn.Click -= btnSweeps_Click;//让按钮失效
}
}
}
}

样式

 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Storyboard x:Key="btnFZs">
<PointAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransformOrigin)" >
<EasingPointKeyFrame KeyTime="" Value="0.5,0.5"/>
</PointAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" >
<EasingDoubleKeyFrame KeyTime="" Value="-1">
<EasingDoubleKeyFrame.EasingFunction>
<CubicEase EasingMode="EaseOut"/>
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="">
<EasingDoubleKeyFrame.EasingFunction>
<CubicEase EasingMode="EaseOut"/>
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="btns" BeginTime="0:0:1"> </Storyboard>
<!--表示资源-->
<Style TargetType="Button">
<Setter Property="Foreground" Value="Black"/>
<Setter Property="RenderTransform">
<Setter.Value>
<!--实现对元素拉伸,旋转,扭曲等效果-->
<TransformGroup>
<!--能够让某对象的缩放、旋转、扭曲等变化效果合并起来使用-->
<ScaleTransform/>
<!--能够让某对象产生缩放变化-->
<SkewTransform/>
<!--能够让某对象产生扭曲变化-->
<RotateTransform/>
<!--能够让某对象产生旋转变化,根据中心点进行顺时针旋转或逆时针旋转-->
<TranslateTransform/>
<!--能够让某对象的缩放、旋转、扭曲等变化效果合并起来使用-->
<MatrixTransform/>
<!--能够让某对象通过矩阵算法实现更为复杂的变形-->
</TransformGroup>
</Setter.Value>
</Setter>
<!--设置属性-->
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<!--设置模版-->
<Border x:Name="back" Opacity="0.9" CornerRadius="">
<!--<Border.Background>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
-->
<!--渐变的范围-->
<!--
<GradientStop Color="Bisque" Offset=""/>
-->
<!--渐变对位置-->
<!--
<GradientStop Color="#1111" Offset="0.5"/>
<GradientStop Color="#1111" Offset=""/>
</LinearGradientBrush>
</Border.Background>-->
<!--如果要多次设置背景就要在次添加一个border-->
<Border x:Name="fore" BorderThickness="" CornerRadius="" BorderBrush="#5555">
<Border.Background>
<!--线性渐变画刷-->
<!--<LinearGradientBrush StartPoint="0,0.5" EndPoint="0.5,1">
<GradientStop Color="#6fff" Offset="0.5"/>
<GradientStop Color="#1111" Offset="0.9"/>
</LinearGradientBrush>-->
<!--<RadialGradientBrush GradientOrigin="0.5,0.5" Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5">
<GradientStop Color="#1111" Offset="0.5"/>
<GradientStop Color="#6fff" Offset="0.4"/>
</RadialGradientBrush>-->
<DrawingBrush>
<DrawingBrush.Drawing>
<GeometryDrawing>
<!-- 绘制矩形 -->
<GeometryDrawing.Geometry>
<RectangleGeometry RadiusX="0.02" RadiusY="0.5"
Rect="0.05,0.05,0.8,0.8" />
</GeometryDrawing.Geometry>
<!-- 矩形填充色 -->
<GeometryDrawing.Brush>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<!--<GradientStop Color="#1111" Offset="" />
<GradientStop Color="White" Offset="" />-->
</LinearGradientBrush>
</GeometryDrawing.Brush>
<!-- 矩形边框 -->
<GeometryDrawing.Pen>
<Pen Thickness="0.05">
<!--绘制的范围-->
<Pen.Brush>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#1111" Offset="" />
<GradientStop Color="#ffff" Offset="" />
</LinearGradientBrush>
</Pen.Brush>
</Pen>
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
</Border.Background>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
<!--使用原来控件设置的属性内容-->
</Border>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Red"/>
<Setter Property="Background" Value="Purple"/>
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="Button" x:Key="btnClickIng">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Opacity="0.9" CornerRadius="">
<Border.Background>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="Gray" Offset="0.5"/>
</LinearGradientBrush>
</Border.Background>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Red"/>
<Setter Property="Background" Value="Purple"/>
</Trigger>
</Style.Triggers>
</Style>
</ResourceDictionary>
 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="Canvas">
<Setter Property="Background">
<Setter.Value>
<RadialGradientBrush
GradientOrigin="0.5,0.5"
Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5">
<RadialGradientBrush.GradientStops>
<GradientStop Color="Tan" Offset="" />
</RadialGradientBrush.GradientStops>
</RadialGradientBrush>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True"> </Trigger>
</Style.Triggers>
</Style>
</ResourceDictionary>
 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Storyboard x:Key="fanzhuan"><!--定义旋转功能-->
<PointAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransformOrigin)" Storyboard.TargetName="grid">
<EasingPointKeyFrame KeyTime="" Value="0.5,0.5"/>
</PointAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="grid">
<EasingDoubleKeyFrame KeyTime="" Value="-1">
<EasingDoubleKeyFrame.EasingFunction>
<CubicEase EasingMode="EaseOut"/>
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="">
<EasingDoubleKeyFrame.EasingFunction>
<CubicEase EasingMode="EaseOut"/>
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Style TargetType="Grid">
<Setter Property="RenderTransform">
<Setter.Value>
<!--实现对元素拉伸,旋转,扭曲等效果-->
<TransformGroup>
<!--能够让某对象的缩放、旋转、扭曲等变化效果合并起来使用-->
<ScaleTransform/>
<!--能够让某对象产生缩放变化-->
<SkewTransform/>
<!--能够让某对象产生扭曲变化-->
<RotateTransform/>
<!--能够让某对象产生旋转变化,根据中心点进行顺时针旋转或逆时针旋转-->
<TranslateTransform/>
<!--能够让某对象的缩放、旋转、扭曲等变化效果合并起来使用-->
<MatrixTransform/>
<!--能够让某对象通过矩阵算法实现更为复杂的变形-->
</TransformGroup>
</Setter.Value>
</Setter>
<Setter Property="Background">
<Setter.Value>
<DrawingBrush>
<DrawingBrush.Drawing>
<GeometryDrawing>
<!-- 绘制矩形 -->
<GeometryDrawing.Geometry>
<RectangleGeometry RadiusX="0.05" RadiusY=""
Rect="0,0,1,1" />
</GeometryDrawing.Geometry>
<!-- 矩形填充色 -->
<GeometryDrawing.Brush>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="BurlyWood" Offset="" />
<GradientStop Color="LemonChiffon" Offset="" />
</LinearGradientBrush>
</GeometryDrawing.Brush>
<!-- 矩形边框 -->
<GeometryDrawing.Pen>
<Pen Thickness="0.05">
<!--绘制的范围-->
<Pen.Brush>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="Black" Offset="0.01" />
<GradientStop Color="Plum" Offset="0.8" />
</LinearGradientBrush>
</Pen.Brush>
</Pen>
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="Label">
<Setter Property="Background">
<Setter.Value>
<DrawingBrush>
<DrawingBrush.Drawing>
<GeometryDrawing>
<!-- 绘制矩形 -->
<GeometryDrawing.Geometry>
<RectangleGeometry RadiusX="0.1" RadiusY="0.07"
Rect="1,1,1,1" />
</GeometryDrawing.Geometry>
<!-- 矩形填充色 -->
<GeometryDrawing.Brush>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#1111" Offset="" />
<GradientStop Color="#ffff" Offset="0.1" />
</LinearGradientBrush>
</GeometryDrawing.Brush>
<!-- 矩形边框 -->
<GeometryDrawing.Pen>
<Pen Thickness="0.05">
<!--绘制的范围-->
<Pen.Brush>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#1111" Offset="" />
<GradientStop Color="#ffff" Offset="0.5" />
</LinearGradientBrush>
</Pen.Brush>
</Pen>
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="TextBox">
<Setter Property="Background">
<Setter.Value>
<DrawingBrush>
<DrawingBrush.Drawing>
<GeometryDrawing>
<!-- 绘制矩形 -->
<GeometryDrawing.Geometry>
<RectangleGeometry RadiusX="0.8" RadiusY=""
Rect="1,1,0.5,0.9" />
</GeometryDrawing.Geometry>
<!-- 矩形边框 -->
<GeometryDrawing.Pen>
<Pen Thickness="">
<!--绘制的范围-->
<Pen.Brush>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#1111" Offset="" />
</LinearGradientBrush>
</Pen.Brush>
</Pen>
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

wpf版扫雷游戏的相关教程结束。

《wpf版扫雷游戏.doc》

下载本文的Word格式文档,以方便收藏与打印。