用Java实现一维绘图
我以前从未将Java用于图形,因此我目前正在尝试学习 作为一个基本练习,我想将数组中包含的点绘制到一条数字线上,但不确定如何开始 我正在做以下事情来划定界限:用Java实现一维绘图,java,graphics,Java,Graphics,我以前从未将Java用于图形,因此我目前正在尝试学习 作为一个基本练习,我想将数组中包含的点绘制到一条数字线上,但不确定如何开始 我正在做以下事情来划定界限: public void drawNumberLine(Graphics g) { g.drawLine(0,0,100,0); } 因为我不知道怎样才能画出这条线上的点,所以我不知道从那里走到哪里。我读过一些教程,但都涉及2D绘图,所以我想知道是否有人可以指导我正确的方向。好吧,如果你有一个基线大小,例如100像素,和一个起始值
public void drawNumberLine(Graphics g) {
g.drawLine(0,0,100,0);
}
因为我不知道怎样才能画出这条线上的点,所以我不知道从那里走到哪里。我读过一些教程,但都涉及2D绘图,所以我想知道是否有人可以指导我正确的方向。好吧,如果你有一个基线大小,例如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
这应该让你开始。请注意,如果每一步的
像素数或i
不是整数,则可能需要进行舍入。数组的数字范围是多少?我想你想把它缩小到适合你的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)
}
//查找最大值以进行缩放
双倍最大值=双倍最小值;
双最小值=双最大值
for(双i:数组){
如果(i>max)max=i;
如果(i
如果是整数数组,请确保避免整数除法 一维图是一个点。我想他想把点画在一条线上,比如说————————————————————,除非你的意思和我不同,我用了你给的东西,稍微调整了一下,效果很好!非常感谢。我刚刚注意到,您似乎不知道“接受答案”按钮:)您也应该检查您之前的问题,并将对您帮助最大的问题标记为“接受答案!”:)(这是立柱侧面上下箭头下的复选框)