最近在寫一個上位機,為了與下位機軟件串口進行通信以及一些數據的形象顯示,做到曲線圖這一塊的時候出現了一些問題,我用的是VS2019(個人不能吐槽VS2019新版本,因為平時也很少用VS,下載的時候就直接下載VS2019,用着還好吧,就是出問題得自己去試,在網上找解決辦法貌似很難找)
廢話不多說了,開始講啦
因為我用WPF寫的,它的WPF控件里面不像WFC中直接有chart控件,可以直接拿來用,如下圖所示為WPF的控件
然后我使用DynamicDataDisplay控件來做折線圖的設計
(1)下載DynamicDataDisplay庫文件(下載鏈接放到評論里面了)
(2)在創建的WPF項目的引用里面添加DynamicDataDisplay庫文件(如下圖所示)瀏覽按鈕找到剛下載的庫文件加載進去即可
(3)在XAML文件中先引入chart文件具體代碼見下
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0"
xmlns:local="clr-namespace:WPFSerialAssistant"
(4)然后在自己想要添加的地方寫入chart的具體設計代碼,我的代碼如下,可做參考
<d3:ChartPlotter Name="plotter">
<d3:Header TextBlock.FontSize="20">
圖的名字
</d3:Header>
<d3:VerticalAxisTitle>Sine value</d3:VerticalAxisTitle>
<d3:HorizontalAxisTitle>Sine argument</d3:HorizontalAxisTitle>
</d3:ChartPlotter>
(5)有關數據綁定的問題,比如你現在要畫折線圖上面的點了,應該怎么操作?
在定義chart的時候定義了name屬性,可以根據name屬性在cs中進行數據的綁定來進行畫點。
放一下我的代碼哈
int N =RecData.Length;
double[] x = new double[N];
double[] y = new double[N];
for (int i = 0; i < N; i++)
{
x[i] =i;
y[i] = Convert.ToDouble(RecData[i]);
}
// 創建數據資源
var xDataSource = x.AsXDataSource();
var yDataSource = y.AsYDataSource();
CompositeDataSource compositeDataSource = xDataSource.Join(yDataSource);
// 添加數據到圖像上
plotter.AddLineGraph(compositeDataSource, Colors.Goldenrod, 3);
// 變可見
plotter.FitToView();
---------------------
