C#制作簡易的屏保
前言:前段時間,有個網(wǎng)友問我C#制作屏保的問題,我瞬間懵逼了(C#還可以制作屏保!)。于是我去查閱相關(guān)資料,下面把C#如何制作屏保的過程及我學(xué)習(xí)過程的心得也記錄下來,希望對需要的人能有幫助。
基本思路:
1)屏保運行起來是一個整個屏幕且無邊框的窗體,不能顯示任務(wù)欄,鼠標(biāo)點擊就會退出。當(dāng)然你還可以在界面上自定義一些東西,如顯示系統(tǒng)時間,屏保里面顯示Rss內(nèi)容等。
2)屏幕保護程序的擴展名雖然是".scr",但本質(zhì)是一個可執(zhí)行的".exe"文件。
具體步驟:
打開Visual Studio 2012,建立一個windows項目,取名為MyScreenSaver,并添加一個windows 窗體,取名為FrmMyScr。
設(shè)置FrmMyScr的AutoScaleMode屬性為Font,BackColor屬性為White,F(xiàn)oreColor屬性為ControlText,F(xiàn)ormBoderStyle屬性為None,ShowInTaskbar屬性為False,WindowState屬性為Maximized。
重點:接下來給FrmMyScr添加背景圖片。設(shè)置FrmMyScr的BackGroundImage屬性值如桌面上的bgrdImg.jpg,此時在項目的根目錄下會自動新建Resources文件夾,單擊里面的bgrdImg.jpg,將其文件屬性中“生成操作”的值改為“嵌入的資源”。設(shè)置BackGroundImageLayout屬性為Stretch。
在FrmMyScr中添加一個Label,用于顯示系統(tǒng)時間,取名lblTimeNow,BackColor屬性為Transparent,F(xiàn)oreColor屬性為White。窗體界面如下:
接下來,為窗體編寫相關(guān)事件代碼:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Reflection; using System.IO; namespace MyScreenSaver { public partial class FrmMyScr : Form { public FrmMyScr() { InitializeComponent(); this.DoubleBuffered = true;//設(shè)置本窗體 SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true); SetStyle(ControlStyles.DoubleBuffer, true); } Timer NowTime = new Timer(); private void FrmMyScr_Load(object sender, EventArgs e) { Assembly asm = this.GetType().Assembly; Stream stream = asm.GetManifestResourceStream("MyScreenSaver.Resources.BgrdImg.jpg"); this.BackgroundImage = new Bitmap(stream); this.Click += new System.EventHandler(Exit); this.BackColor = System.Drawing.Color.White; this.lblTimeNow.Location = new System.Drawing.Point((this.Size.Width / 10), this.Size.Height / 5 * 4); NowTime.Interval = 10; this.NowTime.Tick += new System.EventHandler(LableTimeText); NowTime.Start(); } private void Exit(object sender, EventArgs e) { Application.Exit(); } private void LableTimeText(object sender, EventArgs e) { lblTimeNow.Text = DateTime.Now.ToString(); } private void FrmMyScr_Deactivate(object sender, EventArgs e) { Application.Exit(); } } }
到此為止,把程序執(zhí)行一下就可以看到預(yù)期的效果了。當(dāng)然你還想給.exe設(shè)置個圖標(biāo),可用圖標(biāo)制作工具制作一個ico圖標(biāo)如favicon.ico并添加到項目根目錄,在項目右鍵屬性的“應(yīng)用程序”選項卡下的“圖標(biāo)和清單”欄,圖標(biāo)下拉選擇favicon.ico,保存后把程序執(zhí)行一下即可。
最后把bin/debug或者bin/release下的可執(zhí)行程序后綴改成scr,并拷貝到系統(tǒng)盤Windows的system32下。
這樣通過桌面?zhèn)€性化的屏幕保護程序設(shè)置一下就可以投入使用了,是不是很炫呢!趕緊試試吧!
總結(jié):
1)我采用將背景圖片作為“嵌入的資源”的方式,將內(nèi)嵌資源編譯進exe文件里面,故無需將背景圖片一同拷貝進去;否則還需將背景圖片一同拷貝進去。
2)這個項目是用VS2012創(chuàng)建的,默認的目標(biāo)框架為.NET Framework 4.5,這樣運行生成的可執(zhí)行文件MyScreenSaver.exe及MyScreenSaver.scr文件在外部均能夠正常運行;但拷貝到C:\Windows\System32下,運行就報錯:"This application could not be started. Do you want to view information about this issue?"
我試著將目標(biāo)框架修改為.NET Framework 4,重新運行后,MyScreenSaver.exe及MyScreenSaver.scr文件在外部均能夠正常運行,拷貝到C:\Windows\System32下運行也沒有問題了。另外我發(fā)現(xiàn)目標(biāo)框架為.NET Framework 2.0時也沒有問題。真是奇怪!具體原因,筆者暫時不明所以。系統(tǒng)為Windows 7 旗艦版 SP1。
源代碼:http://xiazai.jb51.net/201701/yuanma/MyScreenSaver(jb51.net).rar
參考文章://www.jb51.net/article/101845.htm
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:C#中DataTable導(dǎo)出為HTML格式的方法
欄 目:C#教程
下一篇:C#中倒序輸出字符串的方法示例
本文標(biāo)題:C#制作簡易的屏保
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/6036.html
您可能感興趣的文章
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并打開的方法
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#停止線程的方法
- 01-10WinForm實現(xiàn)仿視頻 器左下角滾動新聞效果的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已安裝軟件變化的方法
- 01-10C#實現(xiàn)多線程下載文件的方法


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現(xiàn)txt定位指定行完整實例
- 01-10WinForm實現(xiàn)仿視頻 器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機閱讀
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10C#中split用法實例總結(jié)
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 04-02jquery與jsp,用jquery
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置