C#制作簡易的屏保
前言:前段時間,有個網(wǎng)友問我C#制作屏保的問題,我瞬間懵逼了(C#還可以制作屏保!)。于是我去查閱相關資料,下面把C#如何制作屏保的過程及我學習過程的心得也記錄下來,希望對需要的人能有幫助。
基本思路:
1)屏保運行起來是一個整個屏幕且無邊框的窗體,不能顯示任務欄,鼠標點擊就會退出。當然你還可以在界面上自定義一些東西,如顯示系統(tǒng)時間,屏保里面顯示Rss內容等。
2)屏幕保護程序的擴展名雖然是".scr",但本質是一個可執(zhí)行的".exe"文件。
具體步驟:
打開Visual Studio 2012,建立一個windows項目,取名為MyScreenSaver,并添加一個windows 窗體,取名為FrmMyScr。
設置FrmMyScr的AutoScaleMode屬性為Font,BackColor屬性為White,F(xiàn)oreColor屬性為ControlText,F(xiàn)ormBoderStyle屬性為None,ShowInTaskbar屬性為False,WindowState屬性為Maximized。
重點:接下來給FrmMyScr添加背景圖片。設置FrmMyScr的BackGroundImage屬性值如桌面上的bgrdImg.jpg,此時在項目的根目錄下會自動新建Resources文件夾,單擊里面的bgrdImg.jpg,將其文件屬性中“生成操作”的值改為“嵌入的資源”。設置BackGroundImageLayout屬性為Stretch。
在FrmMyScr中添加一個Label,用于顯示系統(tǒng)時間,取名lblTimeNow,BackColor屬性為Transparent,F(xiàn)oreColor屬性為White。窗體界面如下:
接下來,為窗體編寫相關事件代碼:
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;//設置本窗體 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í)行一下就可以看到預期的效果了。當然你還想給.exe設置個圖標,可用圖標制作工具制作一個ico圖標如favicon.ico并添加到項目根目錄,在項目右鍵屬性的“應用程序”選項卡下的“圖標和清單”欄,圖標下拉選擇favicon.ico,保存后把程序執(zhí)行一下即可。
最后把bin/debug或者bin/release下的可執(zhí)行程序后綴改成scr,并拷貝到系統(tǒng)盤Windows的system32下。
這樣通過桌面?zhèn)€性化的屏幕保護程序設置一下就可以投入使用了,是不是很炫呢!趕緊試試吧!
總結:
1)我采用將背景圖片作為“嵌入的資源”的方式,將內嵌資源編譯進exe文件里面,故無需將背景圖片一同拷貝進去;否則還需將背景圖片一同拷貝進去。
2)這個項目是用VS2012創(chuàng)建的,默認的目標框架為.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?"
我試著將目標框架修改為.NET Framework 4,重新運行后,MyScreenSaver.exe及MyScreenSaver.scr文件在外部均能夠正常運行,拷貝到C:\Windows\System32下運行也沒有問題了。另外我發(fā)現(xiàn)目標框架為.NET Framework 2.0時也沒有問題。真是奇怪!具體原因,筆者暫時不明所以。系統(tǒng)為Windows 7 旗艦版 SP1。
源代碼:http://xiazai.jb51.net/201701/yuanma/MyScreenSaver(jb51.net).rar
參考文章:http://www.dbjr.com.cn/article/101845.htm
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
c# winform 解決PictureBox 無法打印全部圖片的問題
這篇文章主要介紹了c# winform 解決PictureBox 無法打印全部圖片的問題,幫助大家更好進行c# winform開發(fā),感興趣的朋友可以了解下2020-12-12asp.net(c#)編程實現(xiàn)將彩色圖片變灰階圖片的方法示例
這篇文章主要介紹了asp.net(c#)編程實現(xiàn)將彩色圖片變灰階圖片的方法,結合實例形式分析了C#圖片讀取及屬性操作相關技巧,需要的朋友可以參考下2017-07-07c# AES字節(jié)數(shù)組加密解密流程及代碼實現(xiàn)
這篇文章主要介紹了c# AES字節(jié)數(shù)組加密解密流程及代碼實現(xiàn),幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2020-11-11C#使用DataSet Datatable更新數(shù)據(jù)庫的三種實現(xiàn)方法
這篇文章主要介紹了C#使用DataSet Datatable更新數(shù)據(jù)庫的三種實現(xiàn)方法,需要的朋友可以參考下2014-08-08