最近无所事事,闲着无聊,在网上翻看资料时碰巧看到了屏保制作,根据大神的思路也理解到屏保也不是很难。因此根据我自己的理解,动手谢了一个屏保。
首先,打开VS2010创建一个Windows窗体应用程序,名称可以随便取(我取名ScreeTest),程序创建成功后,VS2010自动打开Form1窗体,由于屏保运行时界面布满整个屏幕,而且在任务管理器中也没有对应的exe程序,因此我们需要设置窗口属性:FormBoderStyle属性为None,ShowInTaskbar属性为False,WindowState属性为Maximized,AutoScaleMode属性为Font。然后在窗体中拖入控件,label(1个)-显示当前时间、timer(2个)-刷新时间、图片位置变化刷新,控件位置随便放。设置timer属性Interval为100。好了,界面布局就这样。
然后就是后台程序的编写。下面我直接上码:
1、设置动态时间:
public partial class Form1 : Form {
public Form1 () { InitializeComponent(); this.DoubleBuffered = true;//设置本窗体双缓存 SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true); timer1.Start();
timer2.Start(); } private void Form1 _Load(object sender, EventArgs e) { //窗体单击时退出程序 this.Click += new System.EventHandler(Exit); this.lblTimeNow.Location = new System.Drawing.Point((this.Size.Width / 3), this.Size.Height / 3 +50);//设置label显示位置屏幕中上方 } private void Exit(object sender, EventArgs e) { Application.Exit(); } private void timer1_Tick(object sender, EventArgs e) { lblTimeNow.Text = DateTime.Now.ToString(); } private void Form1 _Deactivate(object sender, EventArgs e) { Application.Exit(); } } }
2、动态图片设置
//设置全局变量用于切换图片位置 private BitMap bp=new BitMap("Blue.jpg");//设置图片 private Random rd=new Random(); private int x=0; private int y=0; private void timer2_Tick(object sender,EventArgs e) { //获取屏幕大小 Rectangle rt =Screen.GetWorkingArea(this); x=rd.Next(rt.Width); y=rd.Next(rt.Height); if(x+bp.Width>rt.Width) { x=rt.Width-bp.Width; } if(y+bp.Height>rt.Height) { y=rt.Height-bp.Height; } this.Invalidate(); } private void Form1_Paint(object sender,PaintEventArgs e) { e.Graphics.DrawImage(bp,x,y,bp.Width,bp.Height); }
这样,程序就写完了,编译生成运行。效果就出来了