WPF实现贪吃蛇案例1——蛇的创建

WPF实现贪吃蛇案例

1、要使用Canvas布局

分析:

(1)因为Canvas为容器控件,用于定位

(2)所以接下来的一些控件的属性、方法、事件都是在Canvas容器中执行的

2、接着要设置窗口的边框

分析:

​ 没有边框后这个蛇就看着像是在这个窗口中运行,实际上是在Canvas容器中运行

this.WindowStyle = WindowStyle.None;//设置窗口的边框样式为(无边框)

3、为窗口Window添加Loaded添加加载事件

(1)如何添加Window的加载事件?

​ 在xaml界面,点击窗口Window=》》点击属性==》》再点击事件==》》在事件中找到Lodaed事件,然后双击事件后边的空白部分,最后完成添加加载事件

(2)Window_Loaded 表示什么?

Window_Loaded 表示:在窗口加载完之后执行的事件

4、创建蛇

分析:

(1)初始的蛇是由3个或4个圆圈组成的

​ ①可以创建Border控件来设置宽高,使它成为正方形,并将正方形设置为圆形,然后设置其位置,并将控件添加到Canvas中

​ ②如何添加到Canvas中?

首先:要在xaml界面,给Canvas定义一个名字

然后:可以通过名字关键字获取到Children.add属性

最后:在add方法中将Border添加到Canvas容器中

​ 此时,我们就创建了一个圆圈,就是蛇头

 Border bord = new Border();//创建一个Border控件
//Border 表示在另一个元素四周绘制边框和背景
 bord.Background = Brushes.Red;//设置控件的背景颜色
//Backgeound 表示:获取或设置Brush,它填充Border边界之间(实际上就是控件内)的区域
//设置Boder控件的宽度和高度
                bord.Width = 40;
                bord.Height = 40;
                //设置Border控件的边框颜色为(黑色-红色)渐变,角度为0
                Canvas.SetLeft(bord, 200);//设置Canvas容器中,bord控件距离左侧的距离
                Canvas.SetTop(bord, 200);//设置Canvas容器中,bord控件距离上边的距离
                bord.CornerRadius = new CornerRadius(bord.Width / 2);//实现画圆
                                                                     //CornerRadius 表示:获取或设置一个值,向其表示度的角变Border舍入

                //将Border添加到Canvas容器中,首先要在xaml界面给Canvas定义一个名字叫continer(容器)
                continer.Children.Add(bord);//将bord控件添加到continer(实际上就是Canvas)容器中

(2)我们可以通过for循环,来添加三个圆圈

​ ①但是,此时我们遇到了一个问题:就是说3个圆重叠在了一起

问题:就是说3个圆重叠在了一起

分析:这是由于控件的位置是一样的,所以重叠在了一起

解决:我们可以改变它的位置,是在一行排列

​ ②如何改变位置?

​ 1、我们可以假设第一个圆的位置:距离Canvas的距离为500

​ 2、它第二个位置,就应该在第一个圆的左边或者右边(这里我们设置为左边)

​ 3、那么它的距离就等于第一个圆假设的左边距离减去第一个圆的宽度(第三个圆的位置就是减去第一个圆的宽度的二倍),所以我们就可以用i来引导它,i从0-2是三个数,那么乘以i是不是就解决了这个问题呢?

​ (3)此时,我们不知道哪一个是蛇头,所以我们可以在创建好控件后来判断i的值,如果i=0,那么它就是蛇头,否则,就不是

 for (int i = 0; i <3 ; i++)
            {
                Border bord = new Border();//创建一个Border控件
                                           //Border 表示在另一个元素四周绘制边框和背景
                bord.Background = Brushes.Red;//设置控件的背景颜色
                                              //Backgeound 表示:获取或设置Brush,它填充Border边界之间(实际上就是控件内)的区域
                                              //设置Boder控件的宽度和高度
                bord.Width = 40;
                bord.Height = 40;
                if (i==0)
                {
                    bord.Background = Brushes.Red;
                }
                else
                {
                    bord.Background = Brushes.Blue;
                }
                //bord.BorderThickness = new Thickness(20);//设置Border控件的边框粗细都为20
                //bord.BorderBrush = new LinearGradientBrush(Colors.Black, Colors.Red,45);
                //设置Border控件的边框颜色为(黑色-红色)渐变,角度为0
                Canvas.SetLeft(bord, 500-i*bord.Width);//设置Canvas容器中,bord控件距离左侧的距离
                Canvas.SetTop(bord, 200);//设置Canvas容器中,bord控件距离上边的距离
                bord.CornerRadius = new CornerRadius(bord.Width / 2);//实现画圆
                                                                     //CornerRadius 表示:获取或设置一个值,向其表示度的角变Border舍入

                //将Border添加到Canvas容器中,首先要在xaml界面给Canvas定义一个名字叫continer(容器)
                continer.Children.Add(bord);//将bord控件添加到continer(实际上就是Canvas)容器中
            }

你可能感兴趣的:(IT)