国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

使用C#開發(fā)屏幕保護程序步驟

2019-11-17 03:24:38
字體:
供稿:網(wǎng)友

使用C#開發(fā)屏幕保護程序步驟

本文介紹使用C#制作屏幕保護的方法,這個屏幕保護就是仿效視窗系統(tǒng)自帶的字幕屏保。

  屏幕保護程序的擴展名雖然是"scr",但其實是一個可執(zhí)行的"exe"文件。但他又是一個比較獨特的"exe"文件。下面就來探討一下,用C#是如何編寫屏幕保護

的整個過程。

  一.本文中介紹的程序設(shè)計及運行環(huán)境

   (1).微軟視窗2000 服務(wù)器版

   (2)..Net Framework SDK 正式版

  二.C#編寫字幕顯示屏保程序的關(guān)鍵步驟以及解決方法:

  (1).設(shè)定程序的窗體符合屏幕保護的要求:

  由于屏幕保護程序就是一個可執(zhí)行程序,所以在編寫屏幕保護程序的時候,首先按照可執(zhí)行程序來設(shè)計。但屏幕保護有自身的特點。譬如:屏幕保護都是充滿

整個屏幕的,并且沒有無邊。屏幕保護運行的時候,不能顯示任務(wù)欄。在程序設(shè)計中實現(xiàn)這些特點,關(guān)鍵就在于對窗體的某些屬性的設(shè)定上。下面是對窗體屬性的

設(shè)定,就可以滿足屏幕保護的要求,具體如下:

this.Name = "ScreenSaver" ;//窗體運行后無邊界this.FormBorderStyle = FormBorderStyle.None ;//程序運行后不顯示在任務(wù)欄上this.ShowInTaskbar = false ;//窗體運行后,最大化,充滿整個屏幕

  (2).使得字符在屏幕上不斷移動:

  實現(xiàn)字符在屏幕上像字符屏保一樣不斷移動,是通過一個定時器來完成的。不斷移動的字符,其實就是一個Label組件。當(dāng)設(shè)定好Label組件要顯示的字符后,

也就設(shè)定了在屏幕上要移動的字符。定時器每隔一段時間,都把Label組件的橫坐標(biāo)減去一個定值,這樣在定時器的驅(qū)動下,Label組件的位置就變換了,帶來的視

覺效果,就是字符不斷移動。http://m.survivalescaperooms.com/roucheng/p/3515583.html

  當(dāng)Label組件的位置已經(jīng)移動到屏幕的外面以后,這是就有把Label組件的橫坐標(biāo)回復(fù)到起始值(即:屏幕的最右邊),然后判斷Label組件的縱坐標(biāo)是否位于屏

幕的頂部,如果在頂部,則把縱坐標(biāo)的位置重置在中部;如果在中部,則重置在底部;如果在底部,則重置在頂部。經(jīng)過了這些判斷,字符不僅可以實現(xiàn)從右往左

移動,還可以變換字符進入屏幕的位置。從而也豐富了屏幕保護的內(nèi)容。其實要實現(xiàn)這些判斷,首先還必須知道屏幕的工作區(qū)域,因為只有先知道屏幕的工作區(qū)域

,在能夠?qū)崿F(xiàn)對Label組件的橫坐標(biāo)和縱坐標(biāo)的設(shè)定工作。下面就是實現(xiàn)此步驟地具體代碼:

//得到計算機屏幕的工作區(qū)域Rectangle ssWorkArea = Screen.GetWorkingArea ( this ) ;lblMarquee.Location = new Point ( ssWorkArea.Width - iDistance ,lblMarquee.Location.Y ) ;//顯示標(biāo)簽lblMarquee.Visible = true ;// 增加2個象素點,你可以通過修改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 ( 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 ) ;//重定位到頂部elselblMarquee.Location = new Point ( lblMarquee.Location.X , 0 ) ;}

  (3).檢測鍵盤、鼠標(biāo)狀態(tài),確定退出屏幕保護程序:

  在屏幕保護運行的時候,當(dāng)鍵盤被按動,或者鼠標(biāo)移動,屏幕保護都會關(guān)閉。在實際的程序設(shè)計中,檢測鍵盤是否被按動,通過"KeyDown"事件就可以判斷。在

程序中,判斷鼠標(biāo)是否移動的思路是通過二個全局變量記錄下,程序剛剛運行的時候的鼠標(biāo)的位置(即:X和Y),當(dāng)鼠標(biāo)移動的時候,判斷移動后的位置和記錄的

位置是否有出入,如果有出入,就關(guān)閉屏保。下面代碼功能就是檢測鼠標(biāo)移動,并結(jié)束屏幕保護,具體如下:

// 把鼠標(biāo)剛剛開始移動的位置給記錄下來if ( ixStart == 0 && iyStart == 0 ){ixStart = e.X ;iyStart = e.Y ;return ;}//判斷自屏幕保護程序運行后,鼠標(biāo)的位置是否變動else if ( e.X != ixStart || e.Y != iyStart ){Cursor .Show ( ) ;timerSaver.Enabled = false ;application .Exit ( ) ;};

  其中"ixStar"和"iyStart"就是記錄程序運行的時候,鼠標(biāo)的起始位置。

  (4).對Windows對屏幕保護設(shè)定參數(shù)的響應(yīng):

  當(dāng)屏幕保護加入到Windows系統(tǒng)后,你就可以通過Windows系統(tǒng)來設(shè)定屏幕保護的屬性了,由于我們制作的這個屏幕保護,沒有可供設(shè)置的選項,但也要對

Windows的"設(shè)置"按鈕進行響應(yīng)。而要完成這種響應(yīng),所用的知識就是在Windows系統(tǒng)中按動"設(shè)置"按鈕,對屏幕保護進行設(shè)定時,其實也就對屏保程序傳遞"/c"字

符。而要設(shè)定口令,則會傳遞"/a"字符,據(jù)此,可以得到代碼:

if (args [ 0 ].Substring ( 0 , 2 ).Equals ( "/c" ) ){MessageBox.Show("此屏幕保護沒有可供設(shè)置的選項!","用C#制造屏幕保護" ,MessageBoxButtons.OK ,MessageBoxIcon.Information ) ;Application.Exit ( ) ;}else if ( args [ 0 ] == "/a" ){MessageBox.Show("此屏幕保護沒有可供設(shè)定口令的選項!","用C#制造屏幕保護" ,MessageBoxButtons.OK ,MessageBoxIcon.Information ) ;Application.Exit ( ) ;}

  三.總結(jié):

  由于屏幕保護都是Windows程序,所以編譯的時候,要產(chǎn)生Windows程序,編譯的命令如下:

    csc /t:winexe screen.cs

  在正確編譯"Screen.cs"后,可以得到"Screen.exe"文件,把"Screen.exe"改名為"Screen.scr",并拷貝到Windows的"System32"目錄中去。至此這個字符屏保

就完成了從編寫到配置的全部工作了。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 佛教| 寿宁县| 东阿县| 襄垣县| 黔江区| 双峰县| 馆陶县| 海口市| 彰化县| 阜南县| 五指山市| 怀安县| 霍邱县| 邓州市| 绵竹市| 玉屏| 宁远县| 获嘉县| 达拉特旗| 凉城县| 犍为县| 威海市| 柯坪县| 治县。| 高雄市| 多伦县| 阿克陶县| 楚雄市| 黔东| 牟定县| 广东省| 钦州市| 冕宁县| 永仁县| 金寨县| 阳高县| 恩施市| 铜山县| 资中县| 桂东县| 永泰县|