發(fā)文章
發(fā)文工具
撰寫(xiě)
網(wǎng)文摘手
文檔
視頻
思維導(dǎo)圖
隨筆
相冊(cè)
原創(chuàng)同步助手
其他工具
圖片轉(zhuǎn)文字
文件清理
AI助手
留言交流
本文介紹使用C#制作屏幕保護(hù)的方法,這個(gè)屏幕保護(hù)就是仿效視窗系統(tǒng)自帶的字幕屏保。
的整個(gè)過(guò)程。
一.本文中介紹的程序設(shè)計(jì)及運(yùn)行環(huán)境
(1).微軟視窗2000 服務(wù)器版
(2)..Net Framework SDK 正式版
二.C#編寫(xiě)字幕顯示屏保程序的關(guān)鍵步驟以及解決方法:
?。?).設(shè)定程序的窗體符合屏幕保護(hù)的要求:
由于屏幕保護(hù)程序就是一個(gè)可執(zhí)行程序,所以在編寫(xiě)屏幕保護(hù)程序的時(shí)候,首先按照可執(zhí)行程序來(lái)設(shè)計(jì)。但屏幕保護(hù)有自身的特點(diǎn)。譬如:屏幕保護(hù)都是充滿
整個(gè)屏幕的,并且沒(méi)有無(wú)邊。屏幕保護(hù)運(yùn)行的時(shí)候,不能顯示任務(wù)欄。在程序設(shè)計(jì)中實(shí)現(xiàn)這些特點(diǎn),關(guān)鍵就在于對(duì)窗體的某些屬性的設(shè)定上。下面是對(duì)窗體屬性的
設(shè)定,就可以滿足屏幕保護(hù)的要求,具體如下:
this.Name = "ScreenSaver" ;//窗體運(yùn)行后無(wú)邊界this.FormBorderStyle = FormBorderStyle.None ;//程序運(yùn)行后不顯示在任務(wù)欄上this.ShowInTaskbar = false ;//窗體運(yùn)行后,最大化,充滿整個(gè)屏幕
?。?).使得字符在屏幕上不斷移動(dòng):
實(shí)現(xiàn)字符在屏幕上像字符屏保一樣不斷移動(dòng),是通過(guò)一個(gè)定時(shí)器來(lái)完成的。不斷移動(dòng)的字符,其實(shí)就是一個(gè)Label組件。當(dāng)設(shè)定好Label組件要顯示的字符后,
也就設(shè)定了在屏幕上要移動(dòng)的字符。定時(shí)器每隔一段時(shí)間,都把Label組件的橫坐標(biāo)減去一個(gè)定值,這樣在定時(shí)器的驅(qū)動(dòng)下,Label組件的位置就變換了,帶來(lái)的視
覺(jué)效果,就是字符不斷移動(dòng)。http://www.cnblogs.com/roucheng/p/3515583.html
當(dāng)Label組件的位置已經(jīng)移動(dòng)到屏幕的外面以后,這是就有把Label組件的橫坐標(biāo)回復(fù)到起始值(即:屏幕的最右邊),然后判斷Label組件的縱坐標(biāo)是否位于屏
幕的頂部,如果在頂部,則把縱坐標(biāo)的位置重置在中部;如果在中部,則重置在底部;如果在底部,則重置在頂部。經(jīng)過(guò)了這些判斷,字符不僅可以實(shí)現(xiàn)從右往左
移動(dòng),還可以變換字符進(jìn)入屏幕的位置。從而也豐富了屏幕保護(hù)的內(nèi)容。其實(shí)要實(shí)現(xiàn)這些判斷,首先還必須知道屏幕的工作區(qū)域,因?yàn)橹挥邢戎榔聊坏墓ぷ鲄^(qū)域
,在能夠?qū)崿F(xiàn)對(duì)Label組件的橫坐標(biāo)和縱坐標(biāo)的設(shè)定工作。下面就是實(shí)現(xiàn)此步驟地具體代碼:
//得到計(jì)算機(jī)屏幕的工作區(qū)域Rectangle ssWorkArea = Screen.GetWorkingArea ( this ) ;lblMarquee.Location = new Point ( ssWorkArea.Width - iDistance ,lblMarquee.Location.Y ) ;//顯示標(biāo)簽lblMarquee.Visible = true ;// 增加2個(gè)象素點(diǎn),你可以通過(guò)修改speed的值來(lái)改變標(biāo)簽的移動(dòng)速度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 ) ;}
?。?).檢測(cè)鍵盤(pán)、鼠標(biāo)狀態(tài),確定退出屏幕保護(hù)程序:
程序中,判斷鼠標(biāo)是否移動(dòng)的思路是通過(guò)二個(gè)全局變量記錄下,程序剛剛運(yùn)行的時(shí)候的鼠標(biāo)的位置(即:X和Y),當(dāng)鼠標(biāo)移動(dòng)的時(shí)候,判斷移動(dòng)后的位置和記錄的
位置是否有出入,如果有出入,就關(guān)閉屏保。下面代碼功能就是檢測(cè)鼠標(biāo)移動(dòng),并結(jié)束屏幕保護(hù),具體如下:
// 把鼠標(biāo)剛剛開(kāi)始移動(dòng)的位置給記錄下來(lái)if ( ixStart == 0 && iyStart == 0 ){ixStart = e.X ;iyStart = e.Y ;return ;}//判斷自屏幕保護(hù)程序運(yùn)行后,鼠標(biāo)的位置是否變動(dòng)else if ( e.X != ixStart || e.Y != iyStart ){Cursor .Show ( ) ; timerSaver.Enabled = false ;Application .Exit ( ) ;};
(4).對(duì)Windows對(duì)屏幕保護(hù)設(shè)定參數(shù)的響應(yīng):
當(dāng)屏幕保護(hù)加入到Windows系統(tǒng)后,你就可以通過(guò)Windows系統(tǒng)來(lái)設(shè)定屏幕保護(hù)的屬性了,由于我們制作的這個(gè)屏幕保護(hù),沒(méi)有可供設(shè)置的選項(xiàng),但也要對(duì)
if (args [ 0 ].Substring ( 0 , 2 ).Equals ( "/c" ) ){MessageBox.Show("此屏幕保護(hù)沒(méi)有可供設(shè)置的選項(xiàng)!","用C#制造屏幕保護(hù)" ,MessageBoxButtons.OK ,MessageBoxIcon.Information ) ;Application.Exit ( ) ;}else if ( args [ 0 ] == "/a" ){MessageBox.Show("此屏幕保護(hù)沒(méi)有可供設(shè)定口令的選項(xiàng)!","用C#制造屏幕保護(hù)" ,MessageBoxButtons.OK ,MessageBoxIcon.Information ) ;Application.Exit ( ) ;}
三.總結(jié):
由于屏幕保護(hù)都是Windows程序,所以編譯的時(shí)候,要產(chǎn)生Windows程序,編譯的命令如下:
csc /t:winexe screen.cs
就完成了從編寫(xiě)到配置的全部工作了。
來(lái)自: 昵稱10504424 > 《工作》
0條評(píng)論
發(fā)表
請(qǐng)遵守用戶 評(píng)論公約
發(fā)那科工業(yè)機(jī)器人如何編程讓屏幕顯示字符?
發(fā)那科工業(yè)機(jī)器人如何編程讓屏幕顯示字符?在對(duì)發(fā)那科工業(yè)機(jī)器人編程的過(guò)程中有時(shí)候需要讓屏幕上顯示一些提示,在發(fā)那科工業(yè)機(jī)器人中是...
Excel VBA工作薄 5.13數(shù)據(jù)保護(hù)再升級(jí) 關(guān)鍵資料登陸窗體+密碼保護(hù)
Excel VBA工作薄 5.13數(shù)據(jù)保護(hù)再升級(jí) 關(guān)鍵資料登陸窗體+密碼保護(hù)。一打開(kāi)工作薄是這樣的一個(gè)登陸窗體,必須輸入正確的用戶名和密碼之后...
Excel VBA工作薄 5.13數(shù)據(jù)保護(hù)再升級(jí) 關(guān)鍵資料登陸窗體 密碼保護(hù)
Excel VBA工作薄 5.13數(shù)據(jù)保護(hù)再升級(jí) 關(guān)鍵資料登陸窗體 密碼保護(hù)。一打開(kāi)工作薄是這樣的一個(gè)登陸窗體,必須輸入正確的用戶名和密碼之后...
一文學(xué)會(huì)VB編程,簡(jiǎn)單實(shí)用不費(fèi)力
Text = ''''''''''''''''End SubPrivate Sub Combo1_Click() Text5....
利用VB6.0設(shè)計(jì)屏幕保護(hù)程序
利用VB6.0設(shè)計(jì)屏幕保護(hù)程序 屏幕保護(hù)程序可以保護(hù)顯示屏不被損壞,同時(shí)節(jié)約能源。3、檢測(cè)鼠標(biāo)移動(dòng)VB中有一個(gè)檢測(cè)鼠標(biāo)移動(dòng)的對(duì)象事件MouseMove事件。因此如果在程序中直接用MouseMove事件檢測(cè)鼠標(biāo)是否...
Show() 與 ShowDialog() Form.Show()與application.run()區(qū)別
ShowDialog()彈出模式化的窗體Show()彈出非模式化的窗體。模式窗體,在關(guān)閉或隱藏前無(wú)法切換到主窗體。如果用Form.ShowDialog()是?;瘜?duì)話框所以不會(huì)立刻消失,但是如果您還有其他窗口,F(xiàn)orm.ShowDialo...
電腦如何關(guān)閉屏幕保護(hù)程序?
電腦如何關(guān)閉屏幕保護(hù)程序?屏幕保護(hù)是電腦為了保護(hù)顯示屏而產(chǎn)生的一個(gè)程序,當(dāng)我們長(zhǎng)期不觸碰電腦,電腦往往就會(huì)進(jìn)入屏保界面,今天小編就為大家介紹電腦如何關(guān)閉屏幕保護(hù)程序方法,不會(huì)的朋友可以參考本...
如何設(shè)置屏幕保護(hù)程序
如何設(shè)置屏幕保護(hù)程序如何設(shè)置屏幕保護(hù)程序。使用Windows自帶的標(biāo)準(zhǔn)屏幕保護(hù)程序之一 購(gòu)買(mǎi)屏幕保護(hù)程序集 從互聯(lián)網(wǎng)上成千上萬(wàn)個(gè)免費(fèi)屏幕保護(hù)程序中下載一個(gè) 使用提供屏幕保護(hù)程序設(shè)計(jì)功能的程序自己制...
Mac小白入門(mén):Mac電腦要如何快速鎖屏
Mac小白入門(mén):Mac電腦要如何快速鎖屏。Mac要如何快速鎖屏呢?今天小編跟大家分享一下Mac快速鎖屏的方法。首先,點(diǎn)擊"系統(tǒng)偏好設(shè)置" – "桌面與屏幕保護(hù)程序"點(diǎn)擊"桌面與屏幕...
微信掃碼,在手機(jī)上查看選中內(nèi)容