走,捡灌灌去

博客园 首页 联系 订阅 管理

  最近无所事事,闲着无聊,在网上翻看资料时碰巧看到了屏保制作,根据大神的思路也理解到屏保也不是很难。因此根据我自己的理解,动手谢了一个屏保。

  首先,打开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);
}

这样,程序就写完了,编译生成运行。效果就出来了

posted on 2017-01-05 11:13  走,捡灌灌去  阅读(594)  评论(0编辑  收藏  举报