我以前從未使用過Java的圖形,所以我現在正在嘗試學習。作爲一項基本練習,我想將數組中包含的點繪製到數字上,但不知道如何開始。Java的1維圖
我做下面畫線:
public void drawNumberLine(Graphics g) {
g.drawLine(0,0,100,0);
}
不知道從哪裏去那裏,因爲我不知道我怎麼會能夠繪製就行了點。我已經閱讀了一些教程,但都處理二維情節,所以我想知道是否有人能指引我朝着正確的方向前進。
我以前從未使用過Java的圖形,所以我現在正在嘗試學習。作爲一項基本練習,我想將數組中包含的點繪製到數字上,但不知道如何開始。Java的1維圖
我做下面畫線:
public void drawNumberLine(Graphics g) {
g.drawLine(0,0,100,0);
}
不知道從哪裏去那裏,因爲我不知道我怎麼會能夠繪製就行了點。我已經閱讀了一些教程,但都處理二維情節,所以我想知道是否有人能指引我朝着正確的方向前進。
什麼數字範圍是你的數組?我假設你想縮小它以適應你的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數組,一定要避免整數除法。
我使用了你給的東西並調整了它位,它工作得很好!謝謝! – user415663 2011-03-29 19:36:08
我剛剛注意到,您似乎沒有意識到接受答案按鈕:)您還應該仔細閱讀以前的問題,並將最能幫助您的問題標記爲已接受的答案! :)(這是在帖子旁邊的向上/向下箭頭下的複選框) – 2011-03-30 13:36:53
那麼,如果你有一個基線的大小,例如, 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_step
或i
不是整數,則可能必須輪次。
1維圖是單點。 – RoflcoptrException 2011-03-29 09:06:53
我猜他想在一條線上繪製點,例如''| ----- | -----'。 – Thomas 2011-03-29 09:11:08
@Roflcoptr - 0維圖是單點,1維圖是一條線。 – Ishtar 2011-03-29 09:16:22