自己做屏保1
首先简单介绍屏保的一些要点
(1).设定程序的窗体符合屏幕保护的要求:
由于屏幕保护程序就是一个可执行程序,所以在编写屏幕保护程序的时候,首先按照可执行程序来设计。但屏幕保护有自身的特点。譬如:
屏幕保护都是充满整个屏幕的,并且没有无边。屏幕保护运行的时候,不能显示任务栏。在程序设计中实现这些特点,关键就在于对窗体的某
些属性的设定上。下面是对窗体属性的设定,就可以满足屏幕保护的要求,具体如下:
//窗体运行后无边界
this.FormBorderStyle = FormBorderStyle.None ;
//程序运行后不显示在任务栏上
this.ShowInTaskbar = false ;
//窗体运行后,最大化,充满整个屏幕
this.WindowState = FormWindowState.Maximized;
//隐藏光标
Cursor.Hide();
//窗口总在最前
this.TopMost = true;
(2)timer控件介绍,屏保基本上要使用timer,字母屏保,图片屏保等等都需要使用.
设置timer的属性timer1.Enabled = true;
设置timer的Interval属性设置为10000(因为以milliseconds为单位,所以这里设置为10,000,也就是10s)。
timer事件只有一个timer1_Tick
private void timer1_Tick(object sender, EventArgs e)
{
}
图片屏保:随机产生一个点,然后再该处绘制预先准备好的图片。如果多张图片可以随机显示图片.
字幕屏保:可以添加一label控件,在屏幕随机移动.
(3).检测键盘、鼠标状态,确定退出屏幕保护程序:
在屏幕保护运行的时候,当键盘被按动,或者鼠标移动,屏幕保护都会关闭。在实际的程序设计中,检测键盘是否被按动,通
过"KeyDown"事件就可以判断。在程序中,判断鼠标是否移动的思路是通过二个全局变量记录下,程序刚刚运行的时候的鼠标的位置(即:X和Y
),当鼠标移动的时候,判断移动后的位置和记录的位置是否有出入,如果有出入,就关闭屏保。下面代码功能就是检测鼠标移动,并结束屏
幕保护,具体如下:
响应鼠标事件
// 把鼠标刚刚开始移动的位置给记录下来
if ( ixStart == 0 && iyStart == 0 )
{
ixStart = e.X ;
iyStart = e.Y ;
return ;
}
//判断自屏幕保护程序运行后,鼠标的位置是否变动
else if ( e.X != ixStart || e.Y != iyStart )
{
Cursor .Show ( ) ;
timer1.Enabled = false ;
Application .Exit ( ) ;
};
其中"ixStar"和"iyStart"就是记录程序运行的时候,鼠标的起始位置。
响应键盘事件
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
Cursor.Show();
timer1.Enabled = false;
Application.Exit();
}
(5)对Windows对屏幕保护设定参数的响应:
当屏幕保护加入到Windows系统后,你就可以通过Windows系统来设定屏幕保护的属性了,由于我们制作的这个屏幕保护,没有可供设置
的选项,但也要对Windows的"设置"按钮进行响应。而要完成这种响应,所用的知识就是在Windows系统中按动"设置"按钮,对屏幕保护进行设
定时,其实也就对屏保程序传递"/c"字符。而要设定口令,则会传递"/a"字符,据此,可以得到代码:
if (args [ 0 ].Substring ( 0 , 2 ).Equals ( "/c" ) )
{
MessageBox.Show("此屏幕保护没有可供设置的选项!","用C#制造屏幕保护" ,
MessageBoxButtons.OK ,MessageBoxIcon.Information ) ;
Application.Exit ( ) ;
}
else if ( args [ 0 ] == "/a" )
{
MessageBox.Show("此屏幕保护没有可供设定口令的选项!","用C#制造屏幕保护" ,
MessageBoxButtons.OK ,MessageBoxIcon.Information ) ;
Application.Exit ( ) ;
}
(5)编译Windows程序
在正确编译"Screen.cs"后,可以得到"Screen.exe"文件,把"Screen.exe"改名为"Screen.scr",并拷贝到Windows的"System32"目录中去。
到屏保设置界面就可以选择我们的屏保程序了.