[Dev Blog] KCV插件 —— Provissy Tools 。

承蒙各位支持!html

 

正式版已推出,請前往http://tieba.baidu.com/p/3398574166服務器

或者前往:http://provissy.com/?p=7dom

 

請不要在這裏回覆,我沒法保證回覆您的及時性!異步

 

更新日誌:post

V1.0 Release。測試

V8.0,卡頓問題緩解,完全解決遇到不少麻煩,暫時沒法實現,求大神。spa

0.79---------------------------------------3d

0.78 --------------------------------------日誌

11/05/2014,晚,V0.77,揭示板功能發佈!code

11/05/2014,傍晚,V0.76,新增更新提醒,點擊左上角方框可取消,不然5分鐘檢查一次。

11/05/2014,午,V0.75,BBS內部測試發佈(其實也不是BBS啦),詳情看下面。

11/04/2014,午,V0.73,修復所有有關文件位置錯誤的bug,包括生成的記錄莫名其妙跑到桌面,或者跑到了Windows\System32

11/03/2014,更晚,V0.71,資源統計圖的加載使用異步調用,如今不會卡頓了。

11/03/2014,晚,V0.7,修復大部分UI有關問題,通過各類姿式確認應該是沒問題了。新增錯誤處理頁面。下面有介紹。

11/03/2014,午,V0.68發佈,修復更新與資源統計相關的Bug。

11/02/2014,晚,努力了一成天,從早上8點到晚上9點,終於完成了繪製圖表的工做,真的很辛苦。。。下面有詳細。

11/02/2014,午,V0.61,修復bug,新增捐贈頁面。

11/01/2014,晚,V0.6發佈,服務器所有遷移,Updater更新,修復大量bug。

10/31/2014,更晚,V0.59⑨發佈,修復切換統計數據出錯的bug,修復按鈕名稱錯誤的bug。

10/31/2014,晚,V0.59發佈,現可直接查看統計數據。

10/31/2014,午,v0.52發佈,修復bug。

10/31/2014,早,V0.51發佈,修復csv亂碼。

10/30/2014,晚間,解決所有更新有關的bug。

 

->啊咧?多了個功能?

差很少作了個模子。。。

有什麼用呢?秋活dalao推圖的時候,能用這個實時更新探路狀況,別的人也能夠持續刷新,看看別人的出擊陣容。

可是首先,你得有人用。。。。。大概會有人用吧。。。。。

若是報錯,再試一次應該就沒問題了。

沒法在英文系統下讀取和發佈標題帶有中文的內容,如要使用請將區域改成中文。

 

->錯誤處理頁面是個什麼東東?

大概就是這樣的

 

->Chart !讀取CSV文件並繪製折線圖。

Google沒有任何資源!所有靠本身幹!弄了13個小時終於搞定!!!!!

這是定義圖表控件的XAML代碼。

 1 <chartingToolkit:Chart  Name="LineChart1" Title="Material Log">
 2             <chartingToolkit:LineSeries Name="Fuel"
 3                                                 Title="Fuel"  
 4                                                 DependentValuePath="countOfMat" 
 5                                                 IndependentValuePath="DateOF"
 6                                                 ItemsSource="{Binding [0]}"
 7                                                 IsSelectionEnabled="True" AnimationSequence="FirstToLast"/>
 8             <chartingToolkit:LineSeries Name="Ammo"
 9                                                 Title="Ammo"  
10                                                 DependentValuePath="countOfMat" 
11                                                 IndependentValuePath="DateOF"
12                                                 ItemsSource="{Binding [1]}"
13                                                 IsSelectionEnabled="True" AnimationSequence="FirstToLast"/>
14             <chartingToolkit:LineSeries Name="Steel"
15                                                 Title="Steel"  
16                                                 DependentValuePath="countOfMat" 
17                                                 IndependentValuePath="DateOF"
18                                                 ItemsSource="{Binding [2]}"
19                                                 IsSelectionEnabled="True" AnimationSequence="FirstToLast"/>
20             <chartingToolkit:LineSeries Name="Bauxite"
21                                                 Title="Bauxite"  
22                                                 DependentValuePath="countOfMat" 
23                                                 IndependentValuePath="DateOF"
24                                                 ItemsSource="{Binding [3]}"
25                                                 IsSelectionEnabled="True"
26                                         AnimationSequence="FirstToLast"/>
27 
28         </chartingToolkit:Chart>

如下是本人心血,C#邏輯代碼。

  1 private static Style GetNewDataPointStyle(int R,int G,int B)
  2         {
  3             Random random = new Random();
  4             Color background = Color.FromRgb((byte)R,
  5                                              (byte)G,
  6                                              (byte)B);
  7             Style style = new Style(typeof(DataPoint));
  8            Setter st1 = new Setter(DataPoint.BackgroundProperty,
  9                                         new SolidColorBrush(background));
 10             Setter st2 = new Setter(DataPoint.BorderBrushProperty,
 11                                         new SolidColorBrush(Colors.White));
 12             Setter st3 = new Setter(DataPoint.BorderThicknessProperty, new Thickness(0.1));
 13 
 14             Setter st4 = new Setter(DataPoint.TemplateProperty, null);
 15             style.Setters.Add(st1);
 16             style.Setters.Add(st2);
 17             style.Setters.Add(st3);
 18             style.Setters.Add(st4);
 19             return style;
 20         }
 21 
 22         private void loadMatChart()
 23         {
 24             LineSeries fuelLine = LineChart1.Series[0] as LineSeries;
 25             fuelLine.ItemsSource = loadFuel();
 26             LineSeries ammoLine = LineChart1.Series[1] as LineSeries;
 27             ammoLine.ItemsSource = loadAmmo();
 28             LineSeries steelLine = LineChart1.Series[2] as LineSeries;
 29             steelLine.ItemsSource = loadSteel();
 30             LineSeries bauxiteLine = LineChart1.Series[3] as LineSeries;
 31             bauxiteLine.ItemsSource = loadBauxite();
 32             Style dataPointStyle1 = GetNewDataPointStyle(34,139,34);
 33             Style dataPointStyle2 = GetNewDataPointStyle(138,54,15);
 34             Style dataPointStyle3 = GetNewDataPointStyle(128,138,135);
 35             Style dataPointStyle4 = GetNewDataPointStyle(199,97,20);
 36             fuelLine.DataPointStyle = dataPointStyle1;
 37             ammoLine.DataPointStyle = dataPointStyle2;
 38             steelLine.DataPointStyle = dataPointStyle3;
 39             bauxiteLine.DataPointStyle = dataPointStyle4;
 40         }
 41 
 42         private List<MatData> loadBauxite()
 43         {
 44             List<MatData> matdata = new List<MatData>();
 45             foreach (string[] ss in ReadCSV("MaterialsLog.csv"))
 46             {
 47                 matdata.Add(new MatData(ss[0], Int32.Parse(ss[4])));
 48             }
 49             return matdata;
 50         }
 51 
 52         private List<MatData> loadSteel()
 53         {
 54             List<MatData> matdata = new List<MatData>();
 55             foreach (string[] ss in ReadCSV("MaterialsLog.csv"))
 56             {
 57                 matdata.Add(new MatData(ss[0], Int32.Parse(ss[3])));
 58             }
 59             return matdata;
 60         }
 61 
 62         private List<MatData> loadAmmo()
 63         {
 64             List<MatData> matdata = new List<MatData>();
 65             foreach (string[] ss in ReadCSV("MaterialsLog.csv"))
 66             {
 67                 matdata.Add(new MatData(ss[0], Int32.Parse(ss[2])));
 68             }
 69             return matdata;
 70         }
 71 
 72         private List<MatData> loadFuel()
 73         {
 74             List<MatData> matdata = new List<MatData>();
 75             foreach (string[] ss in ReadCSV("MaterialsLog.csv"))
 76             {
 77                 matdata.Add(new MatData(ss[0], Int32.Parse(ss[1])));
 78             }
 79             return matdata;
 80         }
 81 
 82 
 83         public static List<String[]> ReadCSV(string filePathName)
 84         {
 85             List<String[]> ls = new List<String[]>();
 86             StreamReader fileReader = new StreamReader(filePathName);
 87             string strLine = "";
 88             while (strLine != null)
 89             {
 90                 strLine = fileReader.ReadLine();
 91                 if (strLine != null && strLine.Length > 0)
 92                 {
 93                     ls.Add(strLine.Split(','));
 94                     //Debug.WriteLine(strLine);
 95                 }
 96             }
 97             fileReader.Close();
 98             return ls;
 99         }
100 
101         private void initializeSoNoDobiraWo()
102         {
103             try
104             {
105                 loadMatChart();
106             }
107             catch (Exception ex)
108             {
109                 MessageBox.Show("加載統計圖錯誤!(重開KCV試試?) " + ex.ToString());
110             }
111         }
112     }
113 
114 
115     public class MatData
116     {
117         public string DateOF { get; set; }
118         public int countOfMat { get; set; }
119 
120         public MatData(string dateof, int countofmat)
121         {
122             DateOF = dateof;
123             countOfMat = countofmat;
124         }
125     }

什麼?看起來很簡單?實踐出真知。

 

->內建統計數據查看器:

由於WPF控件的特殊性,老夫翻遍了百度找不到讀取csv的方法。

而後,我忽然忘了一件重要的事——平時我都是用Google的啊!

美帝的方法也是亂七八糟五花八門,最後終於讓我找到了!

很是感謝這位叫作morio的博主!

這是他的文章——

CSVファイルを読み込んでDataGridに表示

http://morio2.blogspot.jp/2012/11/csvdatagrid.html

 

天氣轉涼,你們注意保重身體!

 

 

下載地址:V0.41 : http://pan.baidu.com/s/1kToStfh

V0.5 : http://pan.baidu.com/s/1mgxDO3Q

永久下載地址:http://provissy.boo.jp/PrvTools_Beta_Download/ProvissyTools-Beta.dll

相關文章
相關標籤/搜索