2011-03-20 82 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