C# WinForm開發系列 - CheckBox/Button/Label/ProgressBar

作者: peterzb  來源: 博客園  發布時間: 2009-11-12 11:33  閱讀: 11300 次  推薦: 0   原文鏈接   [收藏]  

包含自定義顏色顯示的CheckBox,水晶效果按鈕,透明圓角Label,Vista效果的ProgressBar等控件(文章及相關代碼搜集自網絡,僅供參考學習,版權屬于原作者! ).

1.自定義顏色顯示的CheckBox coloredcheckcontrols.zip


2.逼真的仿Vista效果的按鈕控件 crystalbutton.rar  VistaButton.rar

3.全定制的XP風格進度條

XpProgressBar功能特征

1. 不怎么占用CPU資源,因為使用了雙緩沖的原因
2. 雙緩沖提供了很好的平滑處理,不會閃爍
3. 文字使用Anti alias效果,更加好看
4. 使用文字陰影
5. 全定制功能

4.顯示文字并能嵌入狀態欄的進度條控件

5.A Rotator Control for WinForms

6.透明背景的垂直Label控件

翻譯
randz. 著Extended Vertical Label Control in C# .NET

簡介
本文描述如何在c#中創建一個透明背景色的垂直label用戶控件。該用戶控件允許你從底部或頂部開始繪制文字。

本文是Vertical Label Control in VB.NET的延續。其實,更準確的說,我是把他的工作翻譯到C#中,并添加了從下向上顯示文字的功能。另外,支持背景透明。

7.字體鑲邊的Label控件

翻譯
cesarsouza. 著A Simple Label-like Control with Border Effect

簡介

當我在做一些界面設計的時候,我發現我需要一種類似在字體周邊加上邊框的效果。不幸的是,不但.NET沒有提供這種給字體鑲上邊框的效果,而且,我也沒法在網上找到任何一個免費的實現。于是,我決定自己做一個。

 背景

開始,我打算通過在屏幕上繪制兩次不同大小的文字來實現它。后來,我就把這篇文章發表到CodeProject上,并期望能有誰提出一個更好的解決辦法。結果也真是如此,fwsouthern提出了很好的建議。主要的思想還是一樣的,不過不再采用重疊文字的方法了,轉而,采用GraphicPath, Brush以及其它效果,當然,后一種方法明顯好多了。

我對于GDI+沒有什么經驗,不知道如何直接在屏幕上繪制圖像,于是學習了Bob Powell的入門方法。

創建代碼

現在,開始編碼了,首先,我創建了一個繼承于System.Windows.Forms.Control的組件,然后,重寫了其OnPaint方法,添加了幾個新的屬性,以使其更有點label-like的感覺。

8.使用Vista風格的控件.NET 2.0

9.透明背景色的可定制移動字體Label控件

10.C#中Vista風格的進度條

11.類似于WinRAR壓縮進度條 rarprogressbar.rar

12.自定義的OptionGroup OptionGroup.rar

13.SplitButton SplitButton.rar

14.垂直進度條控件 VerticalProgressBar.rar

15.程序加載時的旋轉進度圈組件

[翻譯]

Martin Gagne.How to write a loading circle animation in .NET?

[簡介]

以前,大家都采用一個進度條顯示程序正在加載。不過,這已經不再流行了。

看看SQL Server Management Studio ExpressWindows Media CenterEncarta 2006Firefox/IE7 加載頁面時,都是采用一個不斷旋轉的圓,以顯示程序正在載入。

程序加載時的旋轉圈組件

16.多任務狀態顯示進度條列表(Vista風格,酷)

【翻譯】

Igor VelikorossovStatus List

簡介

本文的靈感來源于Shapour所寫的文章"Status List - Vista Style"。

寫這個項目和文章的原因是:
1.原來的項目是用VB.NET寫的,不過我是一個C#的開發人員(盡管我經常而且能夠很順利地讀VB或其它語言的代碼,我還是忍不住想把它寫出來)。
2.我發現原控件有不少的限制,因此決定修改并改進這個項目。

仿Vista多任務進度條

改進的地方

本項目的改進之處如下:
- StatusItem類稱為Control的一個派生類,意味著它將繼承父類Control的所有很好的特點。之所以做這些改動的原因是:這樣能夠使用item本身的paint,還不是由StatusList執行paint,這是更面向對象的方法。這個方法,還使得增加其它控件到其中,成為可能。(我還沒有進一步測試這個假設,不過在我寫這篇文章的時候,它真的可以。)

- 我不希望在任務item比較多的時候,如果向下滾動,就會隱藏掉頭信息(heading)。我希望這條heading會一直可見。工程中也提供了一個隱藏heading的接口,如果你不需要的話,你可以隱藏掉heading。

- 我個人認為在list中的所有item應該是一個寬度的,這樣看著更好看一些。你可以在設計器里移動或改變單個Item,不過控件會自動重新布置這些item。

- 我已經增加了一些事件:StatusItemAdded, StatusItemRemovedStatusItemStatusChanged,它們將給你足夠的跟蹤每一個item狀態的適應

不同運行狀態的任務

  


代碼使用

代碼的使用非常直接、簡單,引用鏈接庫(或直接加到你的VS IDE的toolbox上),然后在你的form上增加這個控件。屬性控制器里,控件會展現足夠的設置屬性。

興趣點
一個更妙的設計是給item容易加上3D框。你可以從StatusItemPane.cs中了解更多。
好笑的是,當我受困于這個設計,并花了好幾個小時把它做出來之后,我發現最終的UI并不是我想要的那樣。因此,默認情況下,邊框是不被顯示的。

還有好多的功能可以改進的(改善永無止境)。其中一個是StatusItem的一些虛擬屬性(如圖象,前景色)可以從對象中移出,單獨放在一個類型的對象里。但,我想這就留給你來完成吧,或者在將來的某個時候再修改它(如果對它有足夠的興趣的話)。

0
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()