大家一进到博客就应该看到这张GIF了吧……好吧,今天不是星期一……
那么就来一起做做这个效果啦!看完记得点赞哦~
新建一个WPF项目
如果新建WPF项目应该不用我说了吧,在C#下面找找就好了。
MainWindow.xaml
在初始的Window下添加如下属性:
x:Name="mainWindow"
WindowStartupLocation="CenterScreen"
WindowState="Normal"
WindowStyle="None"
AllowsTransparency="True"
Loaded="Window_Loaded"
Background="Green"
ResizeMode="NoResize"
分别是什么意思呢?
1、给窗口命名,以后后面会用到的。
2、设置窗口的出现位置,这里设置为屏幕中心,你可以设置其他位置。
3、窗口的大小,我设置为正常,你也可以设置为全屏(Maximized)。
4、窗口的样式,此处设为无标题。
5、窗口的边框,True表示无边框。
6、窗口的加载事件,稍后会补充的。
7、背景颜色,你可以再修改。
8、不可改变窗口尺寸。
然后被预设好的Grid添加一个名字:
<Grid x:Name="mainGrid">
</Grid>
那么界面部分就设好咯。
MainWindow.xaml.cs
你首先需要一个计时器:
// 创建DispatcherTimerr对象
private DispatcherTimer dTimer = null;
还需要一个前面提到的Window_Loaded事件:
// 窗体加载事件
private void Window_Loaded(object sender, RoutedEventArgs e)
{
dTimer = new DispatcherTimer();
// 时间间隔,比如每两秒刷新一次
dTimer.Interval = TimeSpan.FromSeconds(1);
dTimer.Tick += new EventHandler(timer_Tick);
dTimer.Start();
}
我们现在应该来写timer_Tick事件了,不过在此之前我们应该决定将要显示什么内容。就以“今天星期一”好了,我们可以创建一个数组,用一个整型变量作为计数器。
我接下来可能比较啰嗦,但只是因为想必看我博客的大多是学生,希望能稍微教教大家思考的方式。
在MainWindow函数前定义全局变量如下:
private int count = 5;
private string[] txt = new string[5] {
"今","天","星","期","一"};
计时器方法如下:
private void timer_Tick(object sender,EventArgs e)
{
if (count == 0)
{
dTimer.Stop();
count = 5;
dTimer.Start();
}
else
{
TextWindow textWindow = new TextWindow(this.mainGrid,this.mainWindow);
textWindow.TxtValue = txt[count-1].ToString();
textWindow.HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
textWindow.VerticalAlignment = System.Windows.VerticalAlignment.Center;
this.mainGrid.Children.Add(textWindow);
count--;
}
}
如果计数器已经为0了,说明数组内的内容已经全部都显示了一遍,那么将其重置后再次开启计数器。
如果不为0,先实例化一个TextWindow窗口,至于这个窗口是做什么的,我们稍后再看。
再随后我们将数组内的字符串赋值给TextWindow类的实例的属性,并设置它的显示位置。
然后将TextWindow窗口添加到mainGrid中,最后将计数器减一。
TextWindow.xaml
新建一个XAML页面大家也会的吧?当然,也可以直接创建UserControl页面。
添加如下代码(我会逐个说明的):
<UserControl x:Class="WpfApplication1.TextWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
RenderTransformOrigin="0.5,0.5"
Loaded="UserControl_Loaded"