C# WinForm開發系列 - CheckBox/Button/Label/ProgressBar
包含自定義顏色顯示的CheckBox,水晶效果按鈕,透明圓角Label,Vista效果的ProgressBar等控件(文章及相關代碼搜集自網絡,僅供參考學習,版權屬于原作者! ).
1.自定義顏色顯示的CheckBox coloredcheckcontrols.zip
2.逼真的仿Vista效果的按鈕控件 crystalbutton.rar VistaButton.rar
XpProgressBar功能特征
1. 不怎么占用CPU資源,因為使用了雙緩沖的原因
2. 雙緩沖提供了很好的平滑處理,不會閃爍
3. 文字使用Anti alias效果,更加好看
4. 使用文字陰影
5. 全定制功能
5.A Rotator Control for WinForms
翻譯
randz. 著Extended Vertical Label Control in C# .NET
簡介
本文描述如何在c#中創建一個透明背景色的垂直label用戶控件。該用戶控件允許你從底部或頂部開始繪制文字。
本文是Vertical Label Control in VB.NET的延續。其實,更準確的說,我是把他的工作翻譯到C#中,并添加了從下向上顯示文字的功能。另外,支持背景透明。
翻譯
cesarsouza. 著A Simple Label-like Control with Border Effect
簡介
當我在做一些界面設計的時候,我發現我需要一種類似在字體周邊加上邊框的效果。不幸的是,不但.NET沒有提供這種給字體鑲上邊框的效果,而且,我也沒法在網上找到任何一個免費的實現。于是,我決定自己做一個。
背景
開始,我打算通過在屏幕上繪制兩次不同大小的文字來實現它。后來,我就把這篇文章發表到CodeProject上,并期望能有誰提出一個更好的解決辦法。結果也真是如此,fwsouthern提出了很好的建議。主要的思想還是一樣的,不過不再采用重疊文字的方法了,轉而,采用GraphicPath, Brush以及其它效果,當然,后一種方法明顯好多了。
我對于GDI+沒有什么經驗,不知道如何直接在屏幕上繪制圖像,于是學習了Bob Powell的入門方法。
創建代碼
現在,開始編碼了,首先,我創建了一個繼承于System.Windows.Forms.Control的組件,然后,重寫了其OnPaint方法,添加了幾個新的屬性,以使其更有點label-like的感覺。
11.類似于WinRAR壓縮進度條 rarprogressbar.rar
12.自定義的OptionGroup OptionGroup.rar
13.SplitButton SplitButton.rar
14.垂直進度條控件 VerticalProgressBar.rar
[翻譯]
Martin Gagne.著How to write a loading circle animation in .NET?
[簡介]
以前,大家都采用一個進度條顯示程序正在加載。不過,這已經不再流行了。
看看SQL Server Management Studio Express、Windows Media Center、Encarta 2006或Firefox/IE7 加載頁面時,都是采用一個不斷旋轉的圓,以顯示程序正在載入。
【翻譯】
Igor Velikorossov著Status List
簡介
本文的靈感來源于Shapour所寫的文章"Status List - Vista Style"。
寫這個項目和文章的原因是:
1.原來的項目是用VB.NET寫的,不過我是一個C#的開發人員(盡管我經常而且能夠很順利地讀VB或其它語言的代碼,我還是忍不住想把它寫出來)。
2.我發現原控件有不少的限制,因此決定修改并改進這個項目。
改進的地方
本項目的改進之處如下:
- StatusItem類稱為Control的一個派生類,意味著它將繼承父類Control的所有很好的特點。之所以做這些改動的原因是:這樣能夠使用item本身的paint,還不是由StatusList執行paint,這是更面向對象的方法。這個方法,還使得增加其它控件到其中,成為可能。(我還沒有進一步測試這個假設,不過在我寫這篇文章的時候,它真的可以。)
- 我不希望在任務item比較多的時候,如果向下滾動,就會隱藏掉頭信息(heading)。我希望這條heading會一直可見。工程中也提供了一個隱藏heading的接口,如果你不需要的話,你可以隱藏掉heading。
- 我個人認為在list中的所有item應該是一個寬度的,這樣看著更好看一些。你可以在設計器里移動或改變單個Item,不過控件會自動重新布置這些item。
- 我已經增加了一些事件:StatusItemAdded, StatusItemRemoved 和StatusItemStatusChanged,它們將給你足夠的跟蹤每一個item狀態的適應
。
不同運行狀態的任務
代碼使用
代碼的使用非常直接、簡單,引用鏈接庫(或直接加到你的VS IDE的toolbox上),然后在你的form上增加這個控件。屬性控制器里,控件會展現足夠的設置屬性。
興趣點
一個更妙的設計是給item容易加上3D框。你可以從StatusItemPane.cs中了解更多。
好笑的是,當我受困于這個設計,并花了好幾個小時把它做出來之后,我發現最終的UI并不是我想要的那樣。因此,默認情況下,邊框是不被顯示的。
還有好多的功能可以改進的(改善永無止境)。其中一個是StatusItem的一些虛擬屬性(如圖象,前景色)可以從對象中移出,單獨放在一個類型的對象里。但,我想這就留給你來完成吧,或者在將來的某個時候再修改它(如果對它有足夠的興趣的話)。