Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Draw Oscilloscope line chart on a Windows Form

Posted on 2004-03-30
6
Medium Priority
?
2,247 Views
Last Modified: 2012-05-05
Experts,

I am trying to draw oscilloscope-like line chart on a Windows Form in C#. The data contains thousands of sample points along certain time period. so the line easily gets to exceed the border of the form.
I wonder if there is any way I can add a scroll bar so that  the points with X-coordinates beyond the limit of the form can be seen, instead of being clipped out.

Thanks a lot
stone
0
Comment
Question by:stone123
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
6 Comments
 
LVL 10

Expert Comment

by:eternal_21
ID: 10721952
No there is not, unfortunately.  Why don't you create an image in memory, and draw on that?  Then you have a PictureBox object on your form that you can set to display your image every time you add a point.  The PictureBox would then have scroll bars.  Or create a custom control that you will draw to instead.

But what I am really wondering is why you don't just size your output to the form's current size?
0
 
LVL 9

Expert Comment

by:msdixon
ID: 10723603
it can be done. i did the exact same thing. i didn't want to resize or distort the graph.

i used a panel within a panel, and drew on the child panel. if the x coordinate was greater than the width, i increased the child panel's width to the x value. and i set the parent panel's autoscroll property to true.
0
 
LVL 1

Author Comment

by:stone123
ID: 10724176
It sounds like a good idea, msdixon. However, when I move the scroll bar, the line changes its length. it becomes shorter than the original one.

you will see the same effect if you try the following code.
      
Graphics g = panel1.CreateGraphics();
Pen myPen = new Pen(Color.Blue);
myPen.Width = 2;
panel1.Width = 2000;
pnlCanvas.Refresh();
g.DrawLine(myPen, 0, 50, 2000, 50);

Thanks a lot

stone
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
LVL 1

Author Comment

by:stone123
ID: 10724264
This is to eternal_21,

How do you draw a line on a System.Drawing.Image object? Can you provide more detail?

Thanks.
0
 
LVL 9

Assisted Solution

by:msdixon
msdixon earned 400 total points
ID: 10725370
if i remember right, i had to override the paint event, and redraw the graph every time. it also had some flicker, but that's another issue.
0
 
LVL 11

Accepted Solution

by:
Agarici earned 600 total points
ID: 10730235
if you want to draw on an Image object you can do something like:

Graphics g = Graphics.FromImage( <your image> )
g.drawline(...)

but:
if you really have a large number of  points you coudl draw only a range of point that fit the width of the display area and use a scrollbar control to change only the position where the range of points 'to be drawn' starts (and ends).

this way you won't have to use an extra picturebox nor draw in a image
and i think it will be faster


hth.

A.
0

Featured Post

[Webinar] Lessons on Recovering from Petya

Skyport is working hard to help customers recover from recent attacks, like the Petya worm. This work has brought to light some important lessons. New malware attacks like this can take down your entire environment. Learn from others mistakes on how to prevent Petya like worms.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Article by: Ivo
C# And Nullable Types Since 2.0 C# has Nullable(T) Generic Structure. The idea behind is to allow value type objects to have null values just like reference types have. This concerns scenarios where not all data sources have values (like a databa…
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
This tutorial will teach you the special effect of super speed similar to the fictional character Wally West aka "The Flash" After Shake : http://www.videocopilot.net/presets/after_shake/ All lightning effects with instructions : http://www.mediaf…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…

688 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question