2011-03-20 55 views
1

我正在研究一个我想在WinForms应用程序中绘制二极管曲线的程序。我有一个二极管名称列表,我可以在图片右侧看到最新的点。即电压为X,电流为Y(曲线包含50点)。在WinForms图片框中绘制多条曲线

我想要做的是从列表中选择一个或多个二极管。你看到的只是一个充满bmp的画框。我知道这不是一个可靠的解决方案,所以我问你可以做什么最好的方法来做这样的事情?我不知道有什么好的组件可以让我做到这一点。所以我只需要知道什么可以成为这项任务的最佳应用?

A quick view of what I want

二极管曲线是这样的:

Diode curve

我最多可以有在我的程序二极管曲线100,所有的人(一个或多个)应通过绘制在列表中点击它们。

那么你怎么看?

UPDATE

也很重要的事情是在曲线取消针,其曲线应当从情节删除!

我绘制轴你看到使用下面的代码:

Bitmap xyCords = new Bitmap(500, 500); 
Graphics g = Graphics.FromImage(xyCords); 
g.DrawLine(penAxis, 250, 0, 250, 500); 
g.DrawLine(penAxis, 0, 250, 500, 250); 
curveBox.Image = xyCords; 

怎么可能以后如果我犯了一个新的Graphics我追加它喜欢:

curveBox.Image += newGraphic; 

**请让我知道是否有任何组件或某件已经可以做我想要的东西。或者告诉我一个好方法!谢谢!

回答

3

尝试使用Graphics.DrawCurve。您只需将所有想要的点放入数组中,然后将该笔和笔传递给该方法。

编辑: 在您的代码后面添加此代码以证明两个图形共存。要擦除一个或另一个,只需绘制相同的点,但在位图的背景颜色(测试它,我不记得它是什么)。

Point[] ptarray = new Point[3]; 
ptarray[0] = new Point(250, 250); 
ptarray[1] = new Point(300, 300); 
ptarray[2] = new Point(350, 400); 

Pen pengraph = new Pen(Color.Green, 0.75F); 
g.DrawCurve(pengraph, ptarray); 

Point[] ptarray2 = new Point[3]; 
ptarray2[0] = new Point(100, 100); 
ptarray2[1] = new Point(200, 150); 
ptarray2[2] = new Point(250, 250); 

Pen pengraph2 = new Pen(Color.Yellow, 1.25F); 
g.DrawCurve(pengraph2, ptarray2); 
+0

@jonsca嗨,我的问题是我应该这样做的基础是什么?我认为在一个picturebox上它不是很好,因为据我所知,它只能包含一个图像。我的意思是说,如果只添加一条曲线很简单,但只要在画框上已经有一条曲线作为bmp,当您要添加第二条曲线时,您必须再次同时添加两条曲线。我对吗? – 2011-03-20 01:02:08

+0

不,因为您会将您的bmp作为图形对象并且您可以执行任何绘画和绘图。就个人而言,如果它的这个方面不是你的整个项目,我会研究已经完成绘图工作的罐头控件(我不知道任何非正式的,但我相信有很多)。 – jonsca 2011-03-20 01:07:57

+0

@jonsca ok我认为你的意思是我可以将尽可能多的图形应用于一个picturebox?我目前使用这个代码来绘制只有我的图片框的轴:'位图xyCords =新的位图(500,500); Graphics g = Graphics.FromImage(xyCords); g。DrawLine(penAxis,250,0,250,500); g。绘图(penAxis,0,250,500,250); curveBox.Image = xyCords;'但你看我不能做以后新的图形和不喜欢'curveBox + = newBMP'这并不编译。你能给一点代码示例吗? – 2011-03-20 01:29:08