I need to write a digital oscilloscope type application. There are many great static graphing controls out there, but I need something that can graph 16 traces processing 4000 samples per second.
Is anyone aware of a high speed graphing control for .NET? I'll even take MFC since that can be wrapped into a .NET control.
Thanks for the help!
Have you looked at GraphViz? I've seen it used in oscilloscope applications, but I'm not positive it will handle the speed you're looking for. GraphViz doesn't take a 'live feed' of instructions like some of the GDI+ controls I've seen.
There are some .NET wrappers for it.
The graphics rednereing (points and lines on a widget) is fairly simple - you could do this with raw Win32 a la Petzold.
DirectX used to have .NET bindings (not sure about current version). It includes support for high-performance 2D and 3D graphics. If anything on Windows can meet your requirements, it will be DirectX.
You can take a look at QCRTGraph control. You can also look at this CodeGuru project.
Though, honestly, with your requirements you might be better off doing your own C++ implementation of it. With only 0.25ms per sample, locking and updating the buffer of any third party control is too expensive for you to afford.
How about ZedGraph? They mention realtime applications specifically here:
http://zedgraph.org/wiki/index.php?title=Display_Dynamic_or_Real-Time_Data
They claim at least ~20 samples per second.
At 4000 samples per second I don't think you're going to want to plot all the points in real time since you're going to make it all the way across the screen in 0.25 seconds...
Check out this question. I highly recommend IOComp for both MFC (ActiveX) and .Net. Very fast and stable.
http://opcactivex.com/Related_Products___Development/Development_Tools/Plot_Pack/screen_iocomp_plotpack.jpg