2011-03-29 37 views
3

我以前從未使用過Java的圖形,所以我現在正在嘗試學習。作爲一項基本練習,我想將數組中包含的點繪製到數字上,但不知道如何開始。Java的1維圖

我做下面畫線:

public void drawNumberLine(Graphics g) { 
    g.drawLine(0,0,100,0); 
} 

不知道從哪裏去那裏,因爲我不知道我怎麼會能夠繪製就行了點。我已經閱讀了一些教程,但都處理二維情節,所以我想知道是否有人能指引我朝着正確的方向前進。

+1

1維圖是單點。 – RoflcoptrException 2011-03-29 09:06:53

+1

我猜他想在一條線上繪製點,例如''| ----- | -----'。 – Thomas 2011-03-29 09:11:08

+4

@Roflcoptr - 0維圖是單點,1維圖是一條線。 – Ishtar 2011-03-29 09:16:22

回答

1

什麼數字範圍是你的數組?我假設你想縮小它以適應你的100條長線?這只是正數嗎?在這種情況下,這樣的事情應該工作

//Find the max value for scaling purposes 
double max = Double.MIN_VALUE; 
double min = Double.MAX_VALUE 
for(double i : array){ 
    if(i > max) max = i; 
    if(i < min) min = i; 
} 


for(double i : array){ 
    //Replace 100 with a variable for how long the line is! 
    double scaled = ((i-min)/(max-min)) * 100; 

    Ellipse.Double circle = new EllipseDouble(width, height, scaled, 0); 

    g2d.draw(circle) 
} 

如果它是一個int數組,一定要避免整數除法。

+0

我使用了你給的東西並調整了它位,它工作得很好!謝謝! – user415663 2011-03-29 19:36:08

+0

我剛剛注意到,您似乎沒有意識到接受答案按鈕:)您還應該仔細閱讀以前的問題,並將最能幫助您的問題標記爲已接受的答案! :)(這是在帖子旁邊的向上/向下箭頭下的複選框) – 2011-03-30 13:36:53

1

那麼,如果你有一個基線的大小,例如, 100個像素,以及起始值,例如, 0像素,你可以計算確切的像素在哪裏繪製點的標記。

實施例:

線代表整數10至20和從50到150個像素得出:

x_offset = 50 
lower_bound = 10 
width = 100 pixels //(150 - 50) 
range = 10 //(20 - 10) 
pixels_per_step = width/range = 100/10 = 10 

因此,每個整數標記,我將在

x = x_offset + pixels_per_step * (i - lower_bound) => (replace constants) 
x = 50 + 10 * (i - 10) => (example for i = 15) 
x = 50 + 10 * (15 - 10) = 50 + 10 * 5 = 50 + 50 = 100 => draw marker 15 at 100 pixels 

繪製這應該讓你開始。請注意,如果pixels_per_stepi不是整數,則可能必須輪次。