Prepare
本文將使用一個NuGet公開的組件來實現一些特殊的控件顯示,方便大家進行快速的開發系統。
聯系作者及加群方式(激活碼在群里發放):http://www.hslcommunication.cn/Cooperation
在Visual Studio 中的NuGet管理器中可以下載安裝,也可以直接在NuGet控制台輸入下面的指令安裝:
Install-Package HslCommunication
NuGet安裝教程 http://www.cnblogs.com/dathlin/p/7705014.html
Summary
組件中包含了一些控件,主要是針對winform機制的,由於WPF的機制完全不一致,所以此處咱提供WPF的版本,只提供了winfrom版本的控件,開發這些控件源自於我之前的項目累積,趁着空閑的間隙重新整理開發完成。
- 首先便是對winfrom自身按鈕的不滿,實在是太過於丑了,而且容易被破解(假如你的按鈕做了權限驗證,權限不足的禁用,實際上這種操作是很危險的,用戶完全可以從網上下載一個灰色按鈕精靈來破解程序,將原先禁用的隱藏的按鈕變得可以點擊),所有就重新開發一個更加完善的按鈕,而且也不那么丑了。
- 時間顯示的控件就是純粹為了好玩開發的,想做個更有意思的控件,順便練練手,技能。
- 縱向的豎立着的進度條,由於微軟沒有提供豎立的進度條,而當你需要這種時就很麻煩,一般橫向的進度條用微軟的即可,但是本組件的進度條也提供了橫着的選項。
- 餅圖控件,為了方便的顯示一些數據的占用比,而開發的。
- 儀表盤控件,顯示一些儀表的數據,使用儀表顯示更加的人性化。
- 信號燈控件,顯示簡單的信號燈狀態。
- 曲線控件,顯示曲線的情況,多曲線對比,實時數據顯示。
要想使用組件的控件,除了使用NuGet來安裝組件外,還需要將組件的dll文件(在你的項目的packages里面可以找到,如果你本來就是引用本地的,就直接拖拽本地的即可)拖拽到工具欄:

拖拽完成后效果如下:

ok,現在可以將控件拖到界面上了,接下來就分別講解幾個控件:
按鈕控件:
直接拖到主界面效果如下:

公開的屬性如下:

基本的屬性都是有注釋的,要想設置顯示的文本,設置UIText即可。可以設置文本顏色,按鈕是否選中,以及圓角大小,基本常用的就這幾項了。雙擊按鈕,進入Click事件也是和button一致的,和button不一樣的地方除了界面的區別,還有就是無法被灰色精靈破解,還有按鈕自帶一個string屬性:CustomerInformation 便於擴展一些自定義的數據。
時間控件:
直接拖到主界面效果如下:

主要功能是自己獲取系統的時間,然后進行顯示,公開了一些允許設置的屬性界面:

主要是指針的顏色設置,文本設置。
進度條控件:
直接拖到主界面效果如下,演示了縱向和橫向的兩種進度條,以及一些顏色的設置,相關的屬性,隨便點點就可以明白:

主要設置的屬性是背景色,前景色,是否顯示文本,邊框色,是否啟動動畫,等等

特別說明:Max是上限值,如果設置為100,那么Value = 10 就是10%, 而另一個屬性 ValueChangeSpeed 則是和動畫快慢有關的。
餅圖控件:
直接拖到主界面效果如下,餅圖數據的現實此處要是使用代碼來實現:

餅圖控件的屬性相對比較少,目前就只有一個 IsRenderPercent 是否顯示百分比的功能。

然后通過代碼來實現設置數據信息:
private void userButton1_Click(object sender, EventArgs e)
{
Random random = new Random();
HslCommunication.Controls.UserPieChart[] charts = new HslCommunication.Controls.UserPieChart[4];
charts[0] = userPieChart1;
charts[1] = userPieChart2;
charts[2] = userPieChart3;
charts[3] = userPieChart4;
for (int j = 0; j < 4; j++)
{
List<string> data = new List<string>();
List<int> ints = new List<int>();
for (int i = 0; i < random.Next(4, 8); i++)
{
data.Add(random.Next(100, 999).ToString());
ints.Add(random.Next(1, 5));
}
charts[j].SetDataSource(
data.ToArray(),
ints.ToArray());
}
}
}
無非是生成了隨機的名字和數據,通過SetDataSource來實現數據本身。效果如下:

此處的顏色也是隨機獲取的,禁止了白色及接近的白色的自動生成。如果需要指定自己的顏色,需要調用該方法的重載方法,傳入另一種類型的數據,允許傳入名字,值,及顏色。如果設置了顯示占用百分比,如下:

儀表盤控件:
話不多說,先上圖,再解釋:

儀表盤控件的基礎屬性如下:

主要支持的特性為:
- 隨意調整大小,儀表的扇形也會隨之變化,從半圓到微小的扇形都可以。
- 支持設置顯示區間,起始值,最大值,設置的當前值需要處於兩者之間,否則無效。
- 指針的變動支持簡單的動畫效果。
- 支持手動設置刻度的分段數量,比如我要設置0-140的情況,分為14段比較合理,如果儀表盤較大,分為28段也可以。
- 支持下限報警區間和上限報警區間,在儀表盤控件的外層有額外顯示。
- 支持值處於報警區間時的文本閃爍。
- 支持手動設置指針的顏色。
- 支持設置單位或額外的文本顯示信息。
按鈕開關控件:
話不多說,先上圖,再解釋:

按鈕開關支持2中狀態,關和開,可以設置自定義的前景色,背景色,按鈕開關變化時將會觸發 OnSwitchChanged 事件,可以在屬性窗口的事件管理器來設置事件。

主要的設置對象是前景色,背景色,開關狀態。
信號燈控件:
這個控件相對比較簡單,除了一個顏色設置外,目前還沒有其他什么功能:

屬性也很簡單。

曲線控件:
曲線控件用於方便的顯示一些實時數據的趨勢,由於曲線控件功能復雜,所以單獨開了一篇文章講解曲線控件:http://www.cnblogs.com/dathlin/p/8341222.html
此處就貼幾張效果圖:僅供參考
單曲線-像素點模式顯示

單曲線-拉伸模式

多曲線-像素點模式

雙坐標-多曲線-像素點模式

其他控件:
未完待續...
