GUI第三方圖表 - EasyChartX

更新日期:3月 23

Winform 程式中時常會使用到圖表, 在微軟官方提供的工具中, 有一個Chart的GUI類別可以使用(參考), 操作Chart過程中一定可以發現, 這跟Excel中所用的圖表非常相似! 沒錯, Chart就是一直以來微軟提供的圖表工具, 可以讓客戶快速地呈現X軸、Y軸的資料圖形, 並且提供很多呈現的選項跟功能讓客戶可以自由變換圖形格式。因此Chart的強大在於得到數據後呈現的多樣性跟用戶操作的彈性, 但是測試測量的操作過程中, 我們的數據一直不斷更新產生, 我們需要的是一個能夠以高效率接收數據的GUI工具, 在這方面Chart的效能是比較低的。Chart工具無法便利提供測試測量領域的幾個重點

  • 數據量龐大的時候, 更新、執行效率很低

  • 添加資料不容易, 測試測量的數據有時候以Y-T圖形, 有時候以X-Y散布圖, 用戶得自行設計邏輯將資料帶入Chart

  • 用戶互動操作的功能全部需要開發者自己撰寫, 非常耗時



台灣簡儀科技自行研發了針對測試測量的高效能圖表, 稱為EasychartX。當數據龐大的時候, 執行效率可以比Chart好10倍以上;並且內建了滑鼠操作的右鍵選單, 可以直接進行圖表變更; 在程式操作方便, 僅需要使用Plot()的方法, 支援多種數據格式的輸入, 讓用戶使用操作更方便


  • [輸入格式]x,y 模式( 單筆/陣列/串列)

  • [輸入格式]Y-t模式 ( 單筆/陣列/串列)

  • [右鍵選單]資料顯示顏色、標記

  • [右鍵選單]隱藏/顯示數據

  • [右鍵選單]顯示滑鼠位置的數值

  • [右鍵選單]顯示刻度範圍

  • [左鍵功能]縮放

  • [左鍵功能]平移


話不多說, 來看以下DEMO影片。 在同樣採用1,000,000點的X-Y圖表繪製中, Chart佔用了超過500MB的記憶體、耗費超過1600ms的時間, 並且GUI接近5秒才真正更新到畫面上。作為對比, EasyChartX占用的記憶起跟耗費的時間都只有Chart的1/10, GUI響應也非常的快。


台灣簡儀科技免費提供EasyChartX給測試測量客戶使用, 包含在SeeSharpTools工具中, 下載連結請參考以下

http://wix.to/rcBGCHs






代碼如下:

using System;
using System.Diagnostics;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

namespace ChartDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            chart1.Series.Clear();
        }

        private void button_start_Click(object sender, EventArgs e)
        {
            int length = 1000000;
            double[] xData = new double[length];
            double[] yData = new double[length];
            Random rand = new Random();
            
            //產生亂數的資料
            for (int i = 0; i < length; i++)
            {
                xData[i] = i;
                yData[i] = rand.NextDouble();
            }

            //開啟計時器
            Stopwatch sw = new Stopwatch();

            //開始計時
            sw.Restart();
            //新建一個數據組, 把X,Y資料放進去
            var series = new Series("Random Data");
            for (int i = 0; i < length; i++)
            {
                series.Points.AddXY(xData[i], yData[i]);
            }
            //將數據組添加到圖表上
            chart1.Series.Add(series);            
            //結算耗時並顯示在GUI上
            var time=sw.ElapsedMilliseconds;
            textBox_chart.Text = string.Format("Data Length={0}, Cost{1}ms", length, time);
        }

        private void button_easychartX_Click(object sender, EventArgs e)
        {
            int length = 1000000;
            double[] xData = new double[length];
            double[] yData = new double[length];
            Random rand = new Random();

            //產生亂數的資料
            for (int i = 0; i < length; i++)
            {
                xData[i] = i;
                yData[i] = rand.NextDouble();
            }

            //開啟計時器
            Stopwatch sw = new Stopwatch();   
            //開始計時
            sw.Restart();
            //繪製圖表, 直接使用Plot方法
            easyChartX1.Plot(xData, yData);
            //結算耗時並顯示在GUI上
            var time = sw.ElapsedMilliseconds;
            textBox_easychartX.Text = string.Format("Data Length={0}, Cost{1}ms", length, time);

        }
    }
}

10 次瀏覽

最新文章

查看全部

Program, Process, Thread 介紹

Program就像是原始碼 , 在IDE編輯修改但還沒執行的程式 Process就像是一個獨立空間, 把各種電腦的實體資源占用下來, 留給程式來執行 Thread就像是執行任務的子空間, 乘載著Process裡頭各種任務 可以得知, 多個Process資源不共用, 而一個Process裡頭可以有很多個Thread, 這些Thread可以共用Process空間裡的資源, 同時這些Thread間也可以

陣列Array的操作

陣列(Array)是程式語言中最常用的的數據類型之一, 由於 C#語言是Managed程式碼(統一由Common Language Runtime管理維護), 因此在C#使用陣列的時候, 用戶不需要考慮記憶體地址、資源開啟/關閉、越界檢查等底層工作, 就像是使用另一種數據格式一樣簡單。 此篇文章介紹了陣列的使用方法, 以及常用的操作, 最後介紹一個簡儀科技提供的dll工具 - SeeSharpTo

GUI工具 - TableLayoutPanel 類別

在winform程式裡, GUI畫面的佈局和排版,包含對齊、最大化、靠左靠右、比例分配等工作, 常常占用大量的時間。微軟提供了TableLayoutPanel的工具, 除了可以輕鬆布局畫面的比例分配, 用戶也可以自由調整在上面的控制項大小 TableLayoutPanel 類別 MSDN介紹 按照字面意思非常清楚, 就是以表格的形式作為畫面布局, 幾個比較基本的初階功能包含 (1) 自定義m*n的

©JYTEK Taiwan 2019