之前貼了圖表控件的示例代碼及控件文件,今天把源代碼總結了一下,順便貼出來.
運用知識點:在一般的軟件開發水平(就是很基礎的知識)上運用了1 . 自定義控件的基礎知識; 2 . .net類庫中的gdi+相關的類; 我承認這兩個知識點是很基礎很簡單的常識,我都不好意思在這里啰嗦,但是為了我以后忘了,所以還是把它記錄下來,以防我以后哪天記不起來了可以翻看一下.(高手可選擇繞行,就不浪費你們的時間了)
控件源代碼和一個使用示例下載 (本篇就不貼示例的代碼了,只顯示他的效果圖)
(點擊查看大圖,由於圖片太長,可以拖動查看其余部分,單擊圖片或者遮罩關閉大圖!)

對於這些知識我也是略懂皮毛,還請大家多多指點.
展示
1.控件的基礎知識(以文字的形式,就不截圖了,不方便),如果想更深的了解控件開發,可以參閱別的文章學習:
a.創建類庫:首先新建解決方案,然后添加一個類庫,最后新建一個類,這個類是自己控件類,給他起一個有意義的名稱,最好不要改他的命名空間,因為為了給我們的控件添加像工具箱中的控件一樣有一個小圖標,我之前改了命名空間小圖標添加不成功,希望三思.
b.繼承合適的父類:讓我們的控件類繼承類Control(基礎控件類,可以開發最基礎的控件),WebControl(比較高一級的控件,可以開發一般的控件),CompositeControl(更為高級,開發組件,由多個控件構成的控件容器),他們繼承關系是CompositeControl繼承WebControl,WebControl基礎Control,可以根據需求來選擇使用哪個,圖表控件使用的是Control開發.
c.裝飾控件類:使用Attribute類裝飾我們的控件類:a. [Description("Name")]:定義手表放到控件上時顯示的提示消息文字; b.[ToolboxData("<{0}:BarCharts runat='server' />")]:是控件被拖進頁面時定義默認的屬性賦值; c.[ToolboxBitmap(typeof(BarCharts), "Resources.barimg.bmp")]:是控件的顯示小圖標,替換藍色的齒輪.以上都是可選的,不止這三種.
d.寫入控件的基本屬性及功能:類中可以寫屬性方法事件,以便與用戶互交,屬性的裝飾: a.[Description("Name")]:是屬性在屬性面板中的描字符串, b.[Browsable(true)]:是否顯示到屬性面板中, c.[Category("Name")]:是屬性的分組名稱, d.[DefaultValue(value)]:是屬性默認值,如果屬性定義時為該默認值,那么屬性面板中的值不是粗體,否則以粗體顯示.
e.重寫控件的輸出內容:使用protected override void Render(HtmlTextWriter writer){writer.Write("Hello word");}方法將字符"Hello word"顯示到頁面中,也可以加HTML標簽,
f.添加引用,開始使用:給我們需要該控件的項目添加該控件的引用,有兩種方法添加,1. 添加為項目引用,他們在用一個解決方案之中; 2.添加文件引用,取出改控件類庫的dll文件復制到相應項目中然后添加改文件的應用;然后可以添加到工具箱中方便使用,
展示
2.gid相關類的基礎使用,更為深入的可以查看相關的文章:
Bitmap bmap = new Bitmap(width,height);//創建一個圖像,width:寬度,height:高度
Graphics g = Graphics.FromImage(bmap);//創建一個畫布
g.SmoothingMode = SmoothingMode.AntiAlias;//消除畫布的鋸齒
g.Clear(BackGroundColor);//初始化畫布的背景色
Pen pen = new Pen(Color.Red);//定義一個畫筆
SolidBrush solidburshs = new SolidBrush(Color.Red);//定義畫刷
Rectangle rect = new Rectangle(left, top, width, height);//定義一個矩形,left:距左距離,top:距上距離,width:寬度,height:高度
g.DrawRectangle(pen, rect);//在畫布上繪制一個矩形,除此之外還有很多類似的方法,用於繪制,填充:文字,矩形,圓形,扇形,線條,路徑,弧度......
PointF pf = new PointF(left, top);//定義一個坐標,left:距左距離,top:距上距離
g.DrawString("Text", new System.Drawing.Font(), solidburshs, pf);
bmp.Save(path);//圖片存為,path:路徑
以上為該圖表控件的最基礎的兩個知識點;
其中里面還定義了一個控件的基本的數據源類:ChartsDataLists,ChartsColumn,ChartsRow,ChartsValue,他的構造和DataTable相仿,我們使用時可以直接定義ChartsDataLists來作為控件的數據源
展示
ChartsDataLists示例如下
ChartsDataLists cd = new ChartsDataLists();
List<ChartsColumn> ccs = new List<ChartsColumn>();//所有的列
ccs.Add(new ChartsColumn("百度"));//列標題
ccs.Add(new ChartsColumn("搜搜"));//列標題
ccs.Add(new ChartsColumn("搜狗"));//列標題
ccs.Add(new ChartsColumn("有道"));//列標題
ccs.Add(new ChartsColumn("谷歌"));//列標題
ccs.Add(new ChartsColumn("必應"));//列標題
cd.Columns = ccs;
List<ChartsRow> crs = new List<ChartsRow>();//所有行
crs.Add(new ChartsRow("12月17日"));//行標題
crs.Add(new ChartsRow("12月18日"));//行標題
crs.Add(new ChartsRow("12月19日"));//行標題
cd.Rows = crs;
//寫入數據
cd.Add(new ChartsValue(ccs[0], crs[0], 4807));
cd.Add(new ChartsValue(ccs[1], crs[0], 1482));
cd.Add(new ChartsValue(ccs[2], crs[0], 1235));
cd.Add(new ChartsValue(ccs[3], crs[0], 1235));
cd.Add(new ChartsValue(ccs[4], crs[0], 2375));
cd.Add(new ChartsValue(ccs[5], crs[0], 570));
cd.Add(new ChartsValue(ccs[0], crs[1], 6517));
cd.Add(new ChartsValue(ccs[1], crs[1], 855));
cd.Add(new ChartsValue(ccs[2], crs[1], 1596));
cd.Add(new ChartsValue(ccs[3], crs[1], 2128));
cd.Add(new ChartsValue(ccs[4], crs[1], 950));
cd.Add(new ChartsValue(ccs[5], crs[1], 950));
cd.Add(new ChartsValue(ccs[0], crs[2], 6517));
cd.Add(new ChartsValue(ccs[1], crs[2], 2128));
cd.Add(new ChartsValue(ccs[2], crs[2], 2337));
//
//以下兩種賦值方法一樣,不過行列的值一定要對應
//
//cd.Add(new ChartsValue(ccs[3], crs[2], 2413));
//cd.Add(new ChartsValue(ccs[4], crs[2], 1406));
//cd.Add(new ChartsValue(ccs[5], crs[2], 1501));
cd.Add(new ChartsValue(new ChartsColumn("有道"), new ChartsRow("12月19日"), 2413));
cd.Add(new ChartsValue(new ChartsColumn("谷歌"), new ChartsRow("12月19日"), 1406));
cd.Add(new ChartsValue(new ChartsColumn("必應"), new ChartsRow("12月19日"), 1501));
控件源代碼和一個使用示例下載