制作要点
1:先要得到这个屏幕的长度和宽度,在窗体运行到最大化后,整个屏幕是黑屏,只有字体随机出现,得到屏幕保护的效果。
如何获得屏幕的Heigth和Wdith呢?
方法1;
可以先简单写个程序(显示出Rorms的长和宽),然后再将窗体最大化,不就是屏幕的长和宽了么。。?(本人刚来优快云可能犯错小白 有些错误请高手门指出)
利用Form1的size属性 就可以获取长和宽
代码 很简单就俩句 txt1.Test=this.Size.Width.ToString();和txt2.Test=this.Size.Heith.ToString();
就建一个窗体 弄俩testbox txtWidth 和txtHeigth 还有一个button GetFormSize 就OK了。。
方法2: 暂时没想出来。
2:产生一个随机数,这里有一个随机数产生实例sjs.cs,如果连续产生俩个随即偶数,则退出循环;
using System;
public class myApp()
{
public static void Main()
{
int random1,random2,flag=0
//随机数产生函数
Random r1=new Random();
//产生一个 0 到1的随机数,然后乘以100就变成0到100的随机数了
random1=(int)(100*r1.NextDouble());
while(flat==0)
{
random2=(int)(100*r1.NextDouble());
Console.WriteLine("random2: {0}",random2);
//如果连续产生俩个随机数为偶数,则打印出来
if((random1%2==0)&&(random2%2==0)
{
flag=1;
Console.WriteLine("random1: {0}",random1);
Console.WriteLine("random2: {0}",random2);
}
else
{
random1=random2;
}
}
}
}
步骤详解
1;新建一个c# Windows应用程序项目,给项目命名为save2,可以再DOS下运行。所以就直接添加save.cs即可;
2;编译代码完毕后再VS.NET2008命令提示行下编译
整个代码如下:
using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
public class ScreenSaver : Form
{
private System.ComponentModel.IContainer components ;
private Timer timerSaver ;
private Label lblMarquee ;
private int speed = 12 ;
private string strMarqueeText = "用C#制造的屏幕保护" ;
private Font fontMarquee = new Font ( "Arial" , 20 , FontStyle.Bold ) ;
private Color colorMarquee = Color.BlueViolet ;
private int iDistance ;
private int ixStart = 0 ;
private int iyStart = 0 ;
public ScreenSaver ( )
{
InitializeComponent ( ) ;
lblMarquee.Font=fontMarquee ;
lblMarquee.ForeColor=colorMarquee ;
Cursor.Hide ( ) ;
}
/// 清理所有正在使用的资源。
protected override void Dispose ( bool disposing )
{
if ( disposing )
{
if ( components != null )
{
components.Dispose ( ) ;
}
}
base.Dispose ( disposing ) ;
}
private void InitializeComponent ( )
{
components = new System.ComponentModel.Container ( ) ;
timerSaver = new Timer ( components ) ;
lblMarquee = new Label ( ) ;
SuspendLayout ( ) ;
timerSaver.Enabled = true ;
timerSaver.Interval = 1 ;
timerSaver.Tick += new System.EventHandler ( timerSaver_Tick ) ;
lblMarquee.ForeColor = Color.White ;
lblMarquee.Location = new Point ( 113 , 0 ) ;
lblMarquee.Name = "lblMarquee" ;
lblMarquee.Size = new Size ( 263 , 256 ) ;
lblMarquee.TabIndex = 0 ;
lblMarquee.Visible = false ;
AutoScaleBaseSize = new Size ( 6 , 14 ) ;
BackColor = Color.Black ;
ClientSize = new Size ( 384 , 347 ) ;
ControlBox = false ;
this.Controls.Add ( lblMarquee) ;
this.KeyPreview = true ;
this.MaximizeBox = false ;
this.MinimizeBox = false ;
this.Name = "ScreenSaver" ;
//窗体运行后无边界
this.FormBorderStyle = FormBorderStyle.None ;
//程序运行后不显示在任务栏上
this.ShowInTaskbar = false ;
//窗体运行后,最大化,充满整个屏幕
this.WindowState = FormWindowState.Maximized ;
this.StartPosition = FormStartPosition.Manual ;
this.KeyDown += new KeyEventHandler ( Form1_KeyDown ) ;
this.MouseDown += new MouseEventHandler ( Form1_MouseDown ) ;
this.MouseMove += new MouseEventHandler ( Form1_MouseMove ) ;
ResumeLayout ( false ) ;
}
protected void timerSaver_Tick ( object sender , System.EventArgs e )
{
int randomum1 ;
Random r1 = new Random();
randomum1 = (int)(600*r1.NextDouble());
lblMarquee.Text = strMarqueeText ;
lblMarquee.Height = lblMarquee.Font.Height ;
lblMarquee.Width = 350 ;
//得到计算机屏幕的工作区域
Rectangle ssWorkArea = Screen.GetWorkingArea ( this ) ;
lblMarquee.Location = new Point ( ssWorkArea.Width - iDistance ,
lblMarquee.Location.Y ) ;
randomum1 = (int)(ssWorkArea.Width*r1.NextDouble());
//显示标签
lblMarquee.Visible = true ;
// 增加2个象素点,你可以通过修改speed的值来改变标签的移动速度
iDistance += speed ;
// 如果标签已经走出屏幕,则把标签的位置重定位到屏幕的右边
if ( lblMarquee.Location.X <= -( lblMarquee.Width ) )
{
iDistance = 0 ;
//初始位置随机产生 从右面出来
lblMarquee.Location = new Point ( lblMarquee.Location.X , randomum1 ) ;
}
}
protected void Form1_MouseDown ( object sender , MouseEventArgs e )
{
Cursor .Show ( ) ;
timerSaver.Enabled = false ;
Application .Exit ( ) ;
}
protected void Form1_MouseMove ( object sender , MouseEventArgs e )
{
// 把鼠标刚刚开始移动的位置给记录下来
if ( ixStart == 0 && iyStart == 0 )
{
ixStart = e.X ;
iyStart = e.Y ;
return ;
}
//判断自屏幕保护程序运行后,鼠标的位置是否变动
else if ( e.X != ixStart || e.Y != iyStart )
{
Cursor .Show ( ) ;
timerSaver.Enabled = false ;
Application .Exit ( ) ;
};
}
protected void Form1_KeyDown ( object sender , KeyEventArgs e )
{
Cursor .Show ( ) ;
timerSaver.Enabled = false ;
Application .Exit ( ) ;
}
public static void Main ( ) //string [ ] args
{
Application.Run ( new ScreenSaver ( ) ) ;
}
}