六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

用C#制作字幕顯示屏幕保護

[摘要]作者: 馬金虎 本文介紹使用C#制作屏幕保護的方法,這個屏幕保護就是仿效視窗系統自帶的字幕屏保。   屏幕保護程序的擴展名雖然是"scr",但其實是一個可執行的&q...
作者: 馬金虎

  本文介紹使用C#制作屏幕保護的方法,這個屏幕保護就是仿效視窗系統自帶的字幕屏保。
   
    屏幕保護程序的擴展名雖然是"scr",但其實是一個可執行的"exe"文件。但他又是一個比較獨特的"exe"文件。下面就來探討一下,用C#是如何編寫屏幕保護的整個過程。
   
    一.本文中介紹的程序設計及運行環境
   
     (1).微軟視窗2000 服務器版
   
     (2)..Net Framework SDK 正式版
   
    二.C#編寫字幕顯示屏保程序的關鍵步驟以及解決方法:
   
    (1).設定程序的窗體符合屏幕保護的要求:
   
    由于屏幕保護程序就是一個可執行程序,所以在編寫屏幕保護程序的時候,首先按照可執行程序來設計。但屏幕保護有自身的特點。譬如:屏幕保護都是充滿整個屏幕的,并且沒有無邊。屏幕保護運行的時候,不能顯示任務欄。在程序設計中實現這些特點,關鍵就在于對窗體的某些屬性的設定上。下面是對窗體屬性的設定,就可以滿足屏幕保護的要求,具體如下:
   
  this.Name = "ScreenSaver" ;
  //窗體運行后無邊界
  this.FormBorderStyle = FormBorderStyle.None ;
  //程序運行后不顯示在任務欄上
  this.ShowInTaskbar = false ;
  //窗體運行后,最大化,充滿整個屏幕
   
    (2).使得字符在屏幕上不斷移動:
   
    實現字符在屏幕上像字符屏保一樣不斷移動,是通過一個定時器來完成的。不斷移動的字符,其實就是一個Label組件。當設定好Label組件要顯示的字符后,也就設定了在屏幕上要移動的字符。定時器每隔一段時間,都把Label組件的橫坐標減去一個定值,這樣在定時器的驅動下,Label組件的位置就變換了,帶來的視覺效果,就是字符不斷移動。
   
    當Label組件的位置已經移動到屏幕的外面以后,這是就有把Label組件的橫坐標回復到起始值(即:屏幕的最右邊),然后判斷Label組件的縱坐標是否位于屏幕的頂部,如果在頂部,則把縱坐標的位置重置在中部;如果在中部,則重置在底部;如果在底部,則重置在頂部。經過了這些判斷,字符不僅可以實現從右往左移動,還可以變換字符進入屏幕的位置。從而也豐富了屏幕保護的內容。其實要實現這些判斷,首先還必須知道屏幕的工作區域,因為只有先知道屏幕的工作區域,在能夠實現對Label組件的橫坐標和縱坐標的設定工作。下面就是實現此步驟地具體代碼:
   
  //得到計算機屏幕的工作區域
  Rectangle ssWorkArea = Screen.GetWorkingArea ( this ) ;
  lblMarquee.Location = new Point ( ssWorkArea.Width - iDistance ,
  lblMarquee.Location.Y ) ;
  //顯示標簽
  lblMarquee.Visible = true ;
  // 增加2個象素點,你可以通過修改speed的值來改變標簽的移動速度
  iDistance += speed ;
  // 如果標簽已經走出屏幕,則把標簽的位置重定位到屏幕的右邊
  if ( lblMarquee.Location.X <= -( lblMarquee.Width ) )
  {
  //Reset the distance to 0.
  iDistance = 0 ;
  //判斷標簽的位置是否在頂部,如果在,則重定位到中部
  if ( lblMarquee.Location.Y == 0)
  lblMarquee.Location = new Point ( lblMarquee.Location.X , ( ssWorkArea.Height / 2 ) ) ;
  //判斷標簽的位置是否在中部,如果在,則重定位到底部
  else if ( lblMarquee.Location.Y == ssWorkArea.Height / 2 )
  lblMarquee.Location = new Point ( lblMarquee.Location.X , ssWorkArea.Height - lblMarquee.Height ) ;
  //重定位到頂部
  else
  lblMarquee.Location = new Point ( lblMarquee.Location.X , 0 ) ;
  }
   
    (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 ( ) ;
  timerSaver.Enabled = false ;
  Application .Exit ( ) ;
  };
   
    其中"ixStar"和"iyStart"就是記錄程序運行的時候,鼠標的起始位置。
   
    (4).對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 ( ) ;
  }
   
    三.總結:
   
    由于屏幕保護都是Windows程序,所以編譯的時候,要產生Windows程序,編譯的命令如下:
   
      csc /t:winexe screen.cs
   
    在正確編譯"Screen.cs"后,可以得到"Screen.exe"文件,把"Screen.exe"改名為"Screen.scr",并拷貝到Windows的"System32"目錄中去。至此這個字符屏保就完成了從編寫到配置的全部工作了。


主站蜘蛛池模板: 欧美做真爱欧美观看免费 | 亚洲a图 | 日韩中文字幕免费在线观看 | 先锋资源久久 | 依人在线免费视频 | 日本永久视频 | 雪白丰满丝袜长腿白嫩在线 | 日韩欧美 在线播放 | 亚洲欧美日韩不卡一区二区三区 | 午夜免费网站 | 欧美视频综合 | 天天狠狠 | 亚洲一级片在线播放 | 在线免费福利 | 欧美一区二区aa大片 | 日韩最新中文字幕 | 欧美亚洲国产日韩综合在线播放 | 色噜噜视频 | 在线观看h视频播放高清 | 欧美一级高清片在线 | 一二三四影院在线观看视频 | 三级在线观看国产 | 欧美一区二区亚洲 | 青娱乐九色| 七七久久综合 | 欧美视频一 | 日韩中文字幕高清在线专区 | 热思思久久 | 午夜影院啪啪 | 日本大片免a费观看在线 | 天堂网www在线资源链接 | 偷窥综合网 | 午夜老司机永久免费看片 | 欧美爽爽| 欧美太黄太色视频在线观看 | 日日夜夜精品免费视频 | 欧美午夜成年片在线观看 | 日本最新免费网站 | 欧美性开放视频 | 天堂精品在线 | 欧美一级欧美三级在线观看 |