top of page
作家相片JYTEK Taiwan

GUI第三方圖表 - EasyChartX

已更新:2020年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工具中, 下載連結請參考以下






代碼如下:

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);

        }
    }
}

281 次查看0 則留言

最新文章

查看全部

全新DAQ數據採集卡 - PXIe/PCIe 5500系列

簡儀科技發布全新JY 5500系列DAQ數據採集卡, 針對多功能測量需求的客戶提供完整的產品解決方案。JY 5500系列共有四種型號(5510, 5511, 5515, 5516)以及兩種介面(PXIe, PCIe)可搭配, 未來也會為客戶提供USB的介面選擇。...

Comments


bottom of page