最快的 WPF 实时图表
嵌入您的软件
WPF WinForms MFC C++ OCX LabView

point 1
symbol 2
symbol
shape
shape
point
shape
symbol

FASTEST REALTIME OSCILLOSCOPE CHARTING COMPONENTS

ProEssentials charting components provides simple features to efficiently handle your oscilloscope-type real-time and strip-chart data.

When installing the ProEssentials product or evaluation. There are several examples that will simulate an oscilloscope or real-time implementation.

The GigaPrime2D Winforms example project demonstrates the continuous re-passing and re-processing of 100 million data points.

Within the PeDemo example project that is replicated in WPF, Winforms, C++, VB.NET, and Delphi, see example 115 by searching the project's source-code for '115'.

The below video provides a quick look at GigaPrime2D in action.

The code below shows the Timer Tick event handler. Changing the local data fYDataToChart is all that is needed to update the chart.

private void Timer1_Tick(object sender, System.EventArgs e)
{
Timer1.Stop();
Random rn = new Random();
int iRandomOffset = rn.Next(600000); // pick a new random start of waveform data to produce variation

// Pass 100 Million Data points from larger prepared array to charted array fYDataToChart
// ProEssentials is set up to use the pointer of fYDataToChart as source for 5 subsets data
// Changing the data inside fYDataToChart is all that is needed to change the chart
Array.Copy(fYDataPool, iRandomOffset, fYDataToChart, 0, 20000000);
Array.Copy(fYDataPool, iRandomOffset + 24000000, fYDataToChart, 20000000, 20000000);
Array.Copy(fYDataPool, iRandomOffset + 48000000, fYDataToChart, 40000000, 20000000);
Array.Copy(fYDataPool, iRandomOffset + 72000000, fYDataToChart, 60000000, 20000000);
Array.Copy(fYDataPool, iRandomOffset + 96000000, fYDataToChart, 80000000, 20000000);

Pesgo1.PeData.ReuseDataX = true; // tells chart x data is not changing, reuse current xdata buffer

Pesgo1.PeFunction.Force3dxVerticeRebuild = true; // lets chart know it needs to process new data stored in YDataToChart
Pesgo1.Invalidate();
Timer1.Start();
}

How is ProEssentials the fastest?

First, ProEssentials efficiently transfers all new data from the CPU to the GPU using optimized memory copy logic.

Second, a compute shader is utilized to perform lossless filtering of the data, reducing it to an optimal quantity based on the screen resolution.

Compute shaders operate with the power of over 3,000 CPU cores, working in parallel to tackle problems simultaneously. This enables filtering to be completed instantaneously.

Third, a second tier compute shader processes the filtered data into Vertex and, optionally, Index buffers, which the GPU utilizes to render the frame. This process is executed nearly instantaneously.

Competitors drain your end-users' laptop battery by relying on generic open-source graphics/gaming logic that continuously outputs frames as if a game. Don't turn your app into a power hogging game. In contrast, ProEssentials generates frames only on demand, sipping power to render graphics in your solutions.

Don’t just take our word for it—put us to the test. Simply edit our GigaPrime3D or GigaPrime2D examples using a competitor’s solution and compare the performance, power requirements, rendering quality, intelligence, and the amount of code required to replicate the demo’s end-user functionality.

我们的任务

我们的首要目标是通过为您的机构和终端用户提供最简单、最专业的服务,达成您的成功。

我们是工程师

ProEssentials是由需要自定义图表组件的专业电气工程师创立的。加入使用ProEssentials的顶级工程公司名单。

谢谢

感谢您成为ProEssentials的客户,也感谢您研究ProEssentials图表引擎。