原創|使用教程|編輯:龔雪|2015-05-20 09:32:51.000|閱讀 1238 次
概述:本教程主要講述如何使用LightningChart Ultimate v6.4的SampleDataSeries控件來繪制固定時間間隔的數據。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
本教程主要為大家介紹如何在Microsoft Visual Studio 2010/2013 .NET C#項目中使用LightningChart Ultimate v6.4 (LC)的SampleDataSeries來繪制固定時間間隔的數據。在其他的Visual Studio版本中,LC的接口程序也是類似的。在Visual Studio中安裝的LightningChart信息被描述在安裝文件夾的另一個文檔中。
通過signal generator.LightningChart來使圖表顯示生成的采樣數據,這其中必須包括在SampleDataSeries系列中由事件處理函數連接到信號發生器上的被添加的數據。信號發生器具有一個用戶界面,它可以編輯所產生的波形。在本示例中,信號發生器在代碼和用戶界面的相應更新中進行初始化。
SampleData series允許較固定間隔的信號數據。當添加數據時,沒有必要給定X點的值,使用FirstSampleTimeStamp、SamplingFrequency和示例索引可以自動計算X點的位置。
創建一個能自動打開主要窗體的Windows Forms應用程序。從工具箱中找到LightningChart控件并將其拖放到窗體中。用同樣的方法步驟添加SignalGenerator控件。
在Form編輯器中設置LC Anchor屬性的Top、Bottom、Left、Right和SignalGenerator Anchor屬性的Bottom、Left、Right 。這樣使它們能很好的被定位,從而不需要調整大小。
調用構造函數初始化。
public Form1() { InitializeComponent(); InitializeChart(); InitializeSignalGenerator(); }
編輯Form1.cs的源代碼(在Solution資源管理器中右鍵單擊Form1.cs并選擇"View Code")來添加一個單獨的SampleDataSeries到LC中。下面是一個示例代碼:
private void InitializeChart() { // Disable repaints caused by property changes lightningChartUltimate1.BeginUpdate(); // Properties could be also set at Form editor lightningChartUltimate1.Name = "SampleDataSeries chart" ; // Hide legend box lightningChartUltimate1.ViewXY.LegendBox.Visible = false ; // Add SampleData series with sample format as double (default). // Double format due easy sample data update on generated sample data (see below) SampleDataSeries series = new SampleDataSeries (lightningChartUltimate1.ViewXY, lightningChartUltimate1.ViewXY.XAxes[0], lightningChartUltimate1.ViewXY.YAxes[0]); // Add the created series into SampleDataSeries list lightningChartUltimate1.ViewXY.SampleDataSeries.Add(series); // Allow automatic destruction of outscrolled data lightningChartUltimate1.ViewXY.DropOldSeriesData = true ; // Allow chart drawing lightningChartUltimate1.EndUpdate(); }
SignalGenerator通過使用LC能生成樣本數據,信號發生器被初始化生成1 Hz的正弦波樣本。下面是一個示例方法來初始化信號發生器,用戶可以使用同樣的方法來初始化Visual Studio的屬性編輯器。
private void InitializeSignalGenerator() { // Set name signalGenerator1.Name = "Signal" ; // Clear sine waveform table signalGenerator1.WaveFormSines.Clear(); // Clear random noise table signalGenerator1.WaveFormRandomNoises.Clear(); // Set sampling frequency signalGenerator1.SamplingFrequency = 1000; // Set signal generator output interval signalGenerator1.OutputInterval = 2; // Set thread type signalGenerator1.ThreadType = ThreadType .Timer; // Add some event listeners signalGenerator1.DataGenerated += new DataGeneratedEventHandler(signalGenerator1_DataGenerated); signalGenerator1.Started += signalGenerator1_Started; signalGenerator1.Stopped += signalGenerator1_Stopped; // Create sine waveform component SineComponent sineComp = new SineComponent (); sineComp.Amplitude = 10.0; sineComp.DelayMs = 0; sineComp.Frequency = 1; sineComp.Offset = 0; sineComp.Enabled = true ; signalGenerator1.WaveFormSines.Add(sineComp); // Create noise waveform component RandomNoiseComponent noiseComp = new RandomNoiseComponent (); noiseComp.Amplitude = 1.0; noiseComp.Offset = 0; noiseComp.Enabled = true ; signalGenerator1.WaveFormRandomNoises.Add(noiseComp); // Update signal generator ui from added components signalGenerator1.UpdateUIFromWaveFormComponents(); }
信號發生器生成的時間應被用來初始化、顯示和結束采樣顯示。以下是在信號發生器初始化方法中引用的方法。
void signalGenerator1_Started(StartedEventArgs args) { // Prepare chart for property updates, in batch lightningChartUltimate1.BeginUpdate(); // Update title lightningChartUltimate1.Title.Text = string .Format( "LightningChart Ultimate, sfreq = {0} kHz" , ( double )signalGenerator1.SamplingFrequency / 1000.0); // Set x axis range lightningChartUltimate1.ViewXY.XAxes[0].SetRange(0, 10); // Set scroll position to the beginning lightningChartUltimate1.ViewXY.XAxes[0].ScrollPosition = 0; // Scrollmode to scrolling lightningChartUltimate1.ViewXY.XAxes[0].ScrollMode = XAxisScrollMode .Scrolling; // Chart has one Y axis ready to go. Just set the range lightningChartUltimate1.ViewXY.YAxes[0].SetRange(-10, 10); // Update series properties SampleDataSeries series = lightningChartUltimate1.ViewXY.SampleDataSeries[0]; series.Clear(); series.FirstSampleTimeStamp = 1.0 / signalGenerator1.SamplingFrequency; series.SamplingFrequency = signalGenerator1.SamplingFrequency; series.MouseInteraction = false ; // Allow chart to update view lightningChartUltimate1.EndUpdate(); } void signalGenerator1_Stopped() { // Prepare chart for property updates lightningChartUltimate1.BeginUpdate(); // Set the scroll mode to None for data review lightningChartUltimate1.ViewXY.XAxes[0].ScrollMode = XAxisScrollMode .None; // Set view to data end double dMin = lightningChartUltimate1.ViewXY.XAxes[0].ScrollPosition - (lightningChartUltimate1.ViewXY.XAxes[0].Maximum - lightningChartUltimate1.ViewXY.XAxes[0].Minimum); lightningChartUltimate1.ViewXY.XAxes[0].SetRange( Math .Max(0, dMin), lightningChartUltimate1.ViewXY.XAxes[0].ScrollPosition); // Allow mouse interaction with series lightningChartUltimate1.ViewXY.SampleDataSeries[0].MouseInteraction = true ; // Allow chart to update view private void signalGenerator1_DataGenerated(DataGeneratedEventArgs args) { // This event handler is raised when new data points are generated. // 'samples' is a multi-channel input. In this example, only the // first channel (samples[0]) is used. if (args.Samples.Length == 0) return; lightningChartUltimate1.BeginUpdate(); lightningChartUltimate1.ViewXY.SampleDataSeries[0].AddSamples(args.Samples[0], false); lightningChartUltimate1.ViewXY.XAxes[0].ScrollPosition = args.FirstSampleTimeStamp + (double)(args.Samples[0].Length - 1) / signalGenerator1.SamplingFrequency; lightningChartUltimate1.EndUpdate(); }
編譯并運行該項目,其結果應如下圖所示:
按下啟動按鈕,啟動信號發生器。LC應該以較正弦曲線小的幅度繪制波形。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件網