Beta2的ScreenSaver

发表于:2007-06-30来源:作者:点击数: 标签:
namespace Screen_Saver { using System; using System.Drawing; using System.Collections; using System.ComponentModel; //using System.WinForms; using System. Windows .Forms; using System.Data; /// summary ///Summary description for Form1. ///
namespace Screen_Saver
{
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
//using System.WinForms;
using System.Windows.Forms;
using System.Data;
    
/// <summary>
///    Summary description for Form1.
/// </summary>
public class ScreenSaver : System.Windows.Forms.Form
{
  /// <summary>
  ///    Required designer variable.
  /// </summary>
  private System.ComponentModel.Container components;
  //private System.WinForms.Timer timerSaver;
  private System.Windows.Forms.Timer timerSaver;
  //private System.WinForms.Label lblMarquee;
        private System.Windows.Forms.Label lblMarquee;
  private int  iSpeed = 2;
  private string strMarqueeText="C Sharp Screen Saver";
             
  private System.Drawing.Font fontMarquee = new System.Drawing.Font ("Arial", 20, System.Drawing.FontStyle.Bold);        
  private Color colorMarquee = System.Drawing.Color.FromArgb(255,255,255);
     
  private int iDistance;
  private int ixStart= 0;
  private int iyStart= 0;  
  public ScreenSaver()
  {            
   InitializeComponent();
            
   lblMarquee.Font=fontMarquee;
   lblMarquee.ForeColor=colorMarquee;
   System.Windows.Forms.Cursor.Hide();
   //System.Drawing.Cursor.Hide();              
  }
  /// <summary>
  ///    Clean up any resources being used.
  /// </summary>
  public override void Dispose()
  {
   base.Dispose();
   components.Dispose();
  }
  /// <summary>
  ///    Required method for Designer support - do not modify
  ///    the contents of this method with the code editor.
  /// </summary>
  private void InitializeComponent()
  {
   System.Resources.ResourceManager resources = new System.Resources.ResourceManager (typeof(ScreenSaver));
   this.components = new System.ComponentModel.Container ();
   //this.timerSaver = new System.WinForms.Timer (this.components);
   //this.lblMarquee = new System.WinForms.Label ();
   this.timerSaver=new System.Windows.Forms.Timer(this.components);
   this.lblMarquee=new System.Windows.Forms.Label();
   //@this.TrayHeight = 90;
   //@this.TrayLargeIcon = false;
   //@this.TrayAutoArrange = true;
   //@timerSaver.SetLocation (new System.Drawing.Point (7, 7));
   timerSaver.Interval = 1;
   timerSaver.Enabled = true;
   timerSaver.Tick += new System.EventHandler (this.timerSaver_Tick);
   lblMarquee.Location = new System.Drawing.Point (88, 0);
   lblMarquee.Size = new System.Drawing.Size (128, 48);
   lblMarquee.ForeColor = System.Drawing.Color.White;
   lblMarquee.TabIndex = 0;
   lblMarquee.Visible = false;
   this.MaximizeBox = false;
   //this.StartPosition = System.WinForms.FormStartPosition.Manual;
   this.StartPosition=System.Windows.Forms.FormStartPosition.Manual;
   this.AutoScaleBaseSize = new System.Drawing.Size (5, 13);
   //this.BorderStyle = System.WinForms.FormBorderStyle.None;
   
   this.KeyPreview = true;
   //this.WindowState = System.WinForms.FormWindowState.Maximized;
   this.WindowState=System.Windows.Forms.FormWindowState.Maximized;
   this.ShowInTaskbar = false;
   this.Icon = (System.Drawing.Icon) resources.GetObject ("$this.Icon");
   this.ControlBox = false;
   this.MinimizeBox = false;
   this.BackColor = System.Drawing.Color.Black;
   this.ClientSize = new System.Drawing.Size (300, 300);
   //this.KeyDown += new System.WinForms.KeyEventHandler (this.Form1_KeyDown);
   this.KeyDown+=new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
   //this.MouseDown += new System.WinForms.MouseEventHandler (this.Form1_MouseDown);
   this.MouseDown+=new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown);
   //this.MouseMove += new System.WinForms.MouseEventHandler (this.Form1_MouseMove);
   this.MouseMove+=new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove);
   this.Controls.Add (this.lblMarquee);
  }
  protected void timerSaver_Tick (object sender, System.EventArgs e)
  {            
   lblMarquee.Text=strMarqueeText;                    
   lblMarquee.Height=lblMarquee.Font.Height;                                    
   lblMarquee.Width=lblMarquee.Text.Length*(int)lblMarquee.Font.Size;
            
   PlayScreenSaver();
  }
  private void PlayScreenSaver()
  {
   //Get the working area of the the computer screen.
   //System.Drawing.Rectangle ssWorkArea = System.WinForms.Screen.GetWorkingArea(this);
   System.Drawing.Rectangle ssWorkArea=System.Windows.Forms.Screen.GetWorkingArea(this);
                                    
   lblMarquee.Location=new System.Drawing.Point(ssWorkArea.Width - iDistance,
    lblMarquee.Location.Y);
            
   //Make the label visible if it is not currently visible.
   lblMarquee.Visible=true;
   // Increment the label distance based on the speed set by the user.
   iDistance += iSpeed;
   // If the label is offscreen, then we want to reposition it to the right.
   if (lblMarquee.Location.X <= -(lblMarquee.Width))
   {
    //Reset the distance to 0.
    iDistance = 0;
                
    //If the label is at the top, move it to the middle.
    if (lblMarquee.Location.Y == 0)
     lblMarquee.Location=new System.Drawing.Point(lblMarquee.Location.X,(ssWorkArea.Height / 2));
            
     // If label is in the middle of the screen move it to the bottom.
    else if(lblMarquee.Location.Y== ssWorkArea.Height /2)
     lblMarquee.Location=new System.Drawing.Point(lblMarquee.Location.X,ssWorkArea.Height - lblMarquee.Height);
     //Move the label back to the top.
    else
     lblMarquee.Location=new System.Drawing.Point(lblMarquee.Location.X,0);
   }    
  }
  
  protected void Form1_MouseDown (object sender, System.Windows.Forms.MouseEventArgs e)
  {
   StopScreenSaver();
  }
  protected void Form1_MouseMove (object sender,System.Windows.Forms.MouseEventArgs e)
  {
   // Determine if the mouse cursor position has been stored previously.
   if (ixStart == 0 && iyStart == 0)
   {
    //Store the mouse cursor coordinates.
    ixStart = e.X;
    iyStart = e.Y;
    return;
   }
    // Has the mouse cursor moved since the screen saver was started?
   else if (e.X != ixStart || e.Y != iyStart)
    StopScreenSaver();
     
  }
  private void StopScreenSaver()
  {
   //System.Drawing.Cursor.Show();  
   System.Windows.Forms.Cursor.Show();
   timerSaver.Enabled=false;
   Application.Exit();
  }
  protected void Form1_KeyDown (object sender, System.Windows.Forms.KeyEventArgs e)
  {
   StopScreenSaver();            
  }
  /// <summary>
  /// The main entry point for the application.
  /// </summary>
  public static void Main(string[] args)
  {
   if (args.Length==1)
   {
    //Display the options dialog box.
    if (args[0].Substring(0,2).Equals("/c"))
    {
     
     MessageBox.Show("Options are not available for this screen saver",
      " C# Screen Saver",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Information);
      //MessageBox.IconInformation);                 
     Application.Exit();
    }
     //Start the screen saver normally.
    else if (args[0]=="/s")                 
     Application.Run(new ScreenSaver());
     //Diaplay the password dialog             
    else if (args[0]=="/a")
    {
     MessageBox.Show("Passwords are not available for this screen saver",
      " C# Screen Saver",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Information);
      //MessageBox.IconInformation);
     Application.Exit();
    }
   }            
    //For any other args --> start.
   else                 
    Application.Run(new ScreenSaver());
  }
            
}
}

原文转自:http://www.ltesting.net