<WinForm_2>一個簡單實用的小應用——案頭時鐘

來源:互聯網
上載者:User

 

 

 

 

 

 

:視窗的標題

:視窗背景色

:擷取或設定將表示表單透明地區的顏色——這個屬性相對重要,來看看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());    }}


 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.