字幕顯示屏幕保護(hù)_第1頁
字幕顯示屏幕保護(hù)_第2頁
字幕顯示屏幕保護(hù)_第3頁
字幕顯示屏幕保護(hù)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、字幕顯示屏幕保護(hù) 用C制作字幕顯示屏幕保護(hù)版權(quán)所有 2003-2005發(fā)表時(shí)間:2005-3-13 關(guān)鍵字:未知作者: 馬金虎 本文介紹使用C#制作屏幕保護(hù)的方法,這個屏幕保護(hù)就是仿效視窗系統(tǒng)自帶的字幕屏保。 屏幕保護(hù)程序的擴(kuò)展名雖然是"scr",但其實(shí)是一個可執(zhí)行的"exe"文件。但他又是一個比較獨(dú)特的"exe"文件。下面就來探討一下,用C是如何編寫屏幕保護(hù)的整個過程。 一本文中介紹的程序設(shè)計(jì)及運(yùn)行環(huán)境 (1).微軟視窗2000 服務(wù)器版 (2).Net Framework SDK 正式版 二C編寫字幕顯示屏保程序的關(guān)鍵步驟以及解決

2、方法: (1).設(shè)定程序的窗體符合屏幕保護(hù)的要求: 由于屏幕保護(hù)程序就是一個可執(zhí)行程序,所以在編寫屏幕保護(hù)程序的時(shí)候,首先按照可執(zhí)行程序來設(shè)計(jì)。但屏幕保護(hù)有自身的特點(diǎn)。譬如:屏幕保護(hù)都是充滿整個屏幕的,并且沒有無邊。屏幕保護(hù)運(yùn)行的時(shí)候,不能顯示任務(wù)欄。在程序設(shè)計(jì)中實(shí)現(xiàn)這些特點(diǎn),關(guān)鍵就在于對窗體的某些屬性的設(shè)定上。下面是對窗體屬性的設(shè)定,就可以滿足屏幕保護(hù)的要求,具體如下: this.Name = "ScreenSaver" ; /窗體運(yùn)行后無邊界 this.FormBorderStyle = FormBorderStyle.None ; /程序運(yùn)行后不顯示在任務(wù)欄上 thi

3、s.ShowInTaskbar = false ; /窗體運(yùn)行后,最大化,充滿整個屏幕 (2).使得字符在屏幕上不斷移動: 實(shí)現(xiàn)字符在屏幕上像字符屏保一樣不斷移動,是通過一個定時(shí)器來完成的。不斷移動的字符,其實(shí)就是一個Label組件。當(dāng)設(shè)定好Label組件要顯示的字符后,也就設(shè)定了在屏幕上要移動的字符。定時(shí)器每隔一段時(shí)間,都把Label組件的橫坐標(biāo)減去一個定值,這樣在定時(shí)器的驅(qū)動下,Label組件的位置就變換了,帶來的視覺效果,就是字符不斷移動。 當(dāng)Label組件的位置已經(jīng)移動到屏幕的外面以后,這是就有把Label組件的橫坐標(biāo)回復(fù)到起始值(即:屏幕的最右邊),然后判斷Label組件的縱坐標(biāo)是否

4、位于屏幕的頂部,如果在頂部,則把縱坐標(biāo)的位置重置在中部;如果在中部,則重置在底部;如果在底部,則重置在頂部。經(jīng)過了這些判斷,字符不僅可以實(shí)現(xiàn)從右往左移動,還可以變換字符進(jìn)入屏幕的位置。從而也豐富了屏幕保護(hù)的內(nèi)容。其實(shí)要實(shí)現(xiàn)這些判斷,首先還必須知道屏幕的工作區(qū)域,因?yàn)橹挥邢戎榔聊坏墓ぷ鲄^(qū)域,在能夠?qū)崿F(xiàn)對Label組件的橫坐標(biāo)和縱坐標(biāo)的設(shè)定工作。下面就是實(shí)現(xiàn)此步驟地具體代碼: /得到計(jì)算機(jī)屏幕的工作區(qū)域 Rectangle ssWorkArea = Screen.GetWorkingArea ( this ) ; lblMarquee.Location = new Point ( ssWorkA

5、rea.Width - iDistance , lblMarquee.Location.Y ) ; /顯示標(biāo)簽 lblMarquee.Visible = true ; / 增加2個象素點(diǎn),你可以通過修改speed的值來改變標(biāo)簽的移動速度 iDistance += speed ; / 如果標(biāo)簽已經(jīng)走出屏幕,則把標(biāo)簽的位置重定位到屏幕的右邊 if ( lblMarquee.Location.X <= -( lblMarquee.Width ) ) /Reset the distance to 0. iDistance = 0 ; /判斷標(biāo)簽的位置是否在頂部,如果在,則重定位到中部 if (

6、lblMarquee.Location.Y = 0) lblMarquee.Location = new Point ( lblMarquee.Location.X , ( ssWorkArea.Height / 2 ) ) ; /判斷標(biāo)簽的位置是否在中部,如果在,則重定位到底部 else if ( lblMarquee.Location.Y = ssWorkArea.Height / 2 ) lblMarquee.Location = new Point ( lblMarquee.Location.X , ssWorkArea.Height - lblMarquee.Height ) ; /

7、重定位到頂部 else lblMarquee.Location = new Point ( lblMarquee.Location.X , 0 ) ; (3).檢測鍵盤、鼠標(biāo)狀態(tài),確定退出屏幕保護(hù)程序: 在屏幕保護(hù)運(yùn)行的時(shí)候,當(dāng)鍵盤被按動,或者鼠標(biāo)移動,屏幕保護(hù)都會關(guān)閉。在實(shí)際的程序設(shè)計(jì)中,檢測鍵盤是否被按動,通過"KeyDown"事件就可以判斷。在程序中,判斷鼠標(biāo)是否移動的思路是通過二個全局變量記錄下,程序剛剛運(yùn)行的時(shí)候的鼠標(biāo)的位置(即:X和Y),當(dāng)鼠標(biāo)移動的時(shí)候,判斷移動后的位置和記錄的位置是否有出入,如果有出入,就關(guān)閉屏保。下面代碼功能就是檢測鼠標(biāo)移動,并結(jié)束屏幕保護(hù)

8、,具體如下: / 把鼠標(biāo)剛剛開始移動的位置給記錄下來 if ( ixStart = 0 && iyStart = 0 ) ixStart = e.X ; iyStart = e.Y ; return ; /判斷自屏幕保護(hù)程序運(yùn)行后,鼠標(biāo)的位置是否變動 else if ( e.X != ixStart | e.Y != iyStart ) Cursor .Show ( ) ; timerSaver.Enabled = false ; Application .Exit ( ) ; ; 其中"ixStar"和"iyStart"就是記錄程序運(yùn)行

9、的時(shí)候,鼠標(biāo)的起始位置。 (4).對Windows對屏幕保護(hù)設(shè)定參數(shù)的響應(yīng): 當(dāng)屏幕保護(hù)加入到Windows系統(tǒng)后,你就可以通過Windows系統(tǒng)來設(shè)定屏幕保護(hù)的屬性了,由于我們制作的這個屏幕保護(hù),沒有可供設(shè)置的選項(xiàng),但也要對Windows的"設(shè)置"按鈕進(jìn)行響應(yīng)。而要完成這種響應(yīng),所用的知識就是在Windows系統(tǒng)中按動"設(shè)置"按鈕,對屏幕保護(hù)進(jìn)行設(shè)定時(shí),其實(shí)也就對屏保程序傳遞"/c"字符。而要設(shè)定口令,則會傳遞"/a"字符,據(jù)此,可以得到代碼: if (args 0 .Substring ( 0 , 2 ).Eq

10、uals ( "/c" ) ) MessageBox.Show("此屏幕保護(hù)沒有可供設(shè)置的選項(xiàng)!","用C制造屏幕保護(hù)" , MessageBoxButtons.OK ,MessageBoxIcon.Information ) ; Application.Exit ( ) ; else if ( args 0 = "/a" ) MessageBox.Show("此屏幕保護(hù)沒有可供設(shè)定口令的選項(xiàng)!","用C制造屏幕保護(hù)" , MessageBoxButtons.OK ,MessageBoxIcon.Information ) ; Application.Exit ( ) ; 三總結(jié): 由于屏幕保護(hù)都是Windows程序,所以編譯的時(shí)候,要產(chǎn)生Windows程序,編譯的命令如下: csc /t:winexe screen.cs 在正確編

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論