现在的位置: 首页 > 综合 > 正文

用c#制作字幕显示屏保(菜鸟)

2013年10月05日 ⁄ 综合 ⁄ 共 4486字 ⁄ 字号 评论关闭

 制作要点

1:先要得到这个屏幕的长度和宽度,在窗体运行到最大化后,整个屏幕是黑屏,只有字体随机出现,得到屏幕保护的效果。

      如何获得屏幕的Heigth和Wdith呢?

方法1;

可以先简单写个程序(显示出Rorms的长和宽),然后再将窗体最大化,不就是屏幕的长和宽了么。。?(本人刚来CSDN可能犯错小白 有些错误请高手门指出)

利用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 ( ) ) ;
  }
 }

抱歉!评论已关闭.