:視窗的標題
:視窗背景色
:擷取或設定將表示表單透明地區的顏色——這個屬性相對重要,來看看msdn中的描述:
當將 Color 分配給 TransparencyKey 屬性時,具有相同 BackColor 的表單地區將透明顯示。在表單的透明地區執行的任何滑鼠操作(如按一下滑鼠)都將傳輸到該透明地區下的視窗。(因此你如果想透明視窗客戶區,只需要將該屬性設定為視窗背景色BackColor就行了)
提供所有的選項(具體可參閱msdn)
//視窗標題Text = "DesktopClock";//ResizeRedraw = true;BackColor = SystemColors.Window;//設定視窗透明地區的顏色(和背景色一樣)TransparencyKey = BackColor;//去掉邊框FormBorderStyle = FormBorderStyle.None;//不在工作列中顯示表單ShowInTaskbar = false;//視窗其實位置StartPosition = FormStartPosition.CenterScreen;//最大化顯示WindowState = FormWindowState.Maximized;
、這兩個API函數來啟動和銷毀一個計時器,在訊息或是指定的函數中來響應計時器訊息到來時的操作。那麼在WinForm中呢,這些功能都封裝到這個類中,具體就是類中的和方法來屬性來安裝事件委託——如何響應計時器訊息
//設定定時器timer = new Timer();timer.Interval = 1000;timer.Tick += new EventHandler(TimerOnTick);timer.Start();
//計時器響應事件public void TimerOnTick(object obj, EventArgs ea){ Invalidate();}
不過別忘了銷毀計時器(雖然C#中有GC記憶體回收機制,不過最好是我們自行解決。呵呵,Win32 SDK的習慣)
//當視窗關閉時停止計時器protected override void OnFormClosing(FormClosingEventArgs fcea){ base.OnFormClosing(fcea); timer.Stop();}
方法.
//繪製數字時鐘protected override void OnPaint(PaintEventArgs pea){ base.OnPaint(pea); Graphics grfx = pea.Graphics; String str = DateTime.Now.ToString("T"); //擷取本地時間 Font font = new Font(Font.FontFamily, 100);//設定新字型 SizeF sizef = grfx.MeasureString(str, font);//擷取時間字串的大小(用於定位) //在案頭右上方繪製數字時鐘 grfx.DrawString(str, font, Brushes.Orange, (ClientSize.Width - sizef.Width), 0);}
//DesktopClock.csusing System;using System.Drawing;using System.Windows.Forms;class DesktopClock: Form{ private Timer timer; public DesktopClock() { //視窗標題 Text = "DesktopClock"; //ResizeRedraw = true; BackColor = SystemColors.Window; //設定視窗透明地區的顏色(和背景色一樣) TransparencyKey = BackColor; //去掉邊框 FormBorderStyle = FormBorderStyle.None; //不在工作列中顯示表單 ShowInTaskbar = false; //視窗其實位置 StartPosition = FormStartPosition.CenterScreen; //最大化顯示 WindowState = FormWindowState.Maximized; //設定定時器 timer = new Timer(); timer.Interval = 1000; timer.Tick += new EventHandler(TimerOnTick); timer.Start(); } //計時器響應事件 public void TimerOnTick(object obj, EventArgs ea) { Invalidate(); } //按下Ctrl+Q就可以退出程式 protected override void OnKeyDown(KeyEventArgs kea) { base.OnKeyDown(kea); if (kea.Modifiers == Keys.Control && kea.KeyCode == Keys.Q) Close(); } //繪製數字時鐘 protected override void OnPaint(PaintEventArgs pea) { base.OnPaint(pea); Graphics grfx = pea.Graphics; String str = DateTime.Now.ToString("T"); Font font = new Font(Font.FontFamily, 100); SizeF sizef = grfx.MeasureString(str, font); //在案頭右上方繪製數字時鐘 grfx.DrawString(str, font, Brushes.Orange, (ClientSize.Width - sizef.Width), 0); } //當視窗關閉時停止計時器 protected override void OnFormClosing(FormClosingEventArgs fcea) { base.OnFormClosing(fcea); timer.Stop(); } static void Main() { Application.Run(new DesktopClock()); }}