最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c#制作屏幕保護程序步驟(字幕屏保)

 更新時間:2014年01月12日 10:41:46   作者:  
本文介紹使用C#制作屏幕保護的方法,這個屏幕保護就是仿效視窗系統(tǒng)自帶的字幕屏保。下面是用C#如何編寫屏幕保護的整個過程

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

二.C#編寫字幕顯示屏保程序的關(guān)鍵步驟以及解決方法:
(1)設(shè)定程序的窗體符合屏幕保護的要求:
由于屏幕保護程序就是一個可執(zhí)行程序,所以在編寫屏幕保護程序的時候,首先按照可執(zhí)行程序來設(shè)計。但屏幕保護有自身的特點。譬如:屏幕保護都是充滿
整個屏幕的,并且沒有無邊。屏幕保護運行的時候,不能顯示任務(wù)欄。在程序設(shè)計中實現(xiàn)這些特點,關(guān)鍵就在于對窗體的某些屬性的設(shè)定上。下面是對窗體屬性的
設(shè)定,就可以滿足屏幕保護的要求,具體如下:

復(fù)制代碼 代碼如下:

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組件的位置就變換了,帶來的視
覺效果,就是字符不斷移動。
當(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)此步驟地具體代碼:

復(fù)制代碼 代碼如下:

//得到計算機屏幕的工作區(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 ) ;
//重定位到頂部
else
lblMarquee.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é)束屏幕保護,具體如下:

復(fù)制代碼 代碼如下:

// 把鼠標(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ù)此,可以得到代碼:

復(fù)制代碼 代碼如下:

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"目錄中去。至此這個字符屏保
就完成了從編寫到配置的全部工作了。

相關(guān)文章

  • Unity3D UI Text得分數(shù)字增加的實例代碼

    Unity3D UI Text得分數(shù)字增加的實例代碼

    這篇文章主要介紹了Unity3D UI Text得分數(shù)字增加方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • C#動態(tài)生成按鈕及定義按鈕事件的方法

    C#動態(tài)生成按鈕及定義按鈕事件的方法

    這篇文章主要介紹了C#動態(tài)生成按鈕及定義按鈕事件的方法,涉及C#按鈕操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • 淺談C#網(wǎng)絡(luò)編程詳解篇

    淺談C#網(wǎng)絡(luò)編程詳解篇

    在現(xiàn)今軟件開發(fā)中,網(wǎng)絡(luò)編程是非常重要的一部分,本文簡要介紹下網(wǎng)絡(luò)編程的概念和實踐,需要的朋友可以參考下
    2017-01-01
  • C#命令模式用法實例

    C#命令模式用法實例

    這篇文章主要介紹了C#命令模式用法,以實例形式較為詳細的分析了C#命令模式的功能、定義及使用技巧,需要的朋友可以參考下
    2015-07-07
  • Unity InputFiled TMP屬性和各種監(jiān)聽示例詳解

    Unity InputFiled TMP屬性和各種監(jiān)聽示例詳解

    這篇文章主要為大家介紹了Unity InputFiled TMP屬性和各種監(jiān)聽示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • c#中自定義Base16編碼解碼的方法示例

    c#中自定義Base16編碼解碼的方法示例

    這篇文章主要給大家介紹了關(guān)于c#中自定義Base16編碼解碼的相關(guān)資料,并且給大家分享了C#中16進制轉(zhuǎn)換為Base64字符串的方法示例,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • C#利用反射來判斷對象是否包含某個屬性的實現(xiàn)方法

    C#利用反射來判斷對象是否包含某個屬性的實現(xiàn)方法

    這篇文章主要介紹了C#利用反射來判斷對象是否包含某個屬性的實現(xiàn)方法,很有借鑒價值的一個技巧,需要的朋友可以參考下
    2014-08-08
  • 詳解如何在C#中接受或拒絕Excel中的修訂

    詳解如何在C#中接受或拒絕Excel中的修訂

    修訂功能可以跟蹤文檔所有的修改,了解修改的過程,這對于團隊協(xié)同文檔編輯、審閱是非常有用的一個功能。本文將詳細為您介紹如何接受或拒絕 Excel 中的修訂,感興趣的可以收藏一下
    2022-12-12
  • C# 中使用隱式和顯式操作符的示例

    C# 中使用隱式和顯式操作符的示例

    這篇文章主要介紹了C# 中使用隱式和顯式操作符的示例,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-04-04
  • C++中const的實現(xiàn)細節(jié)介紹(C,C#同理)

    C++中const的實現(xiàn)細節(jié)介紹(C,C#同理)

    本篇文章主要是對C++中const的實現(xiàn)細節(jié)進行了詳細的介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01

最新評論

昌乐县| 天长市| 建水县| 淮阳县| 中阳县| 修文县| 玉屏| 台东市| 蒲江县| 呼伦贝尔市| 宁化县| 兖州市| 万宁市| 崇明县| 桑日县| 安泽县| 恩平市| 八宿县| 克拉玛依市| 云和县| 白银市| 清流县| 雷波县| 建水县| 紫云| 肃宁县| 安图县| 胶南市| 宝应县| 增城市| 永昌县| 醴陵市| 沅陵县| 奉新县| 墨竹工卡县| 定结县| 石棉县| 澄城县| 锡林浩特市| 新巴尔虎右旗| 龙胜|