Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java实现一维绘图_Java_Graphics - Fatal编程技术网

用Java实现一维绘图

用Java实现一维绘图,java,graphics,Java,Graphics,我以前从未将Java用于图形,因此我目前正在尝试学习 作为一个基本练习,我想将数组中包含的点绘制到一条数字线上,但不确定如何开始 我正在做以下事情来划定界限: public void drawNumberLine(Graphics g) { g.drawLine(0,0,100,0); } 因为我不知道怎样才能画出这条线上的点,所以我不知道从那里走到哪里。我读过一些教程,但都涉及2D绘图,所以我想知道是否有人可以指导我正确的方向。好吧,如果你有一个基线大小,例如100像素,和一个起始值

我以前从未将Java用于图形,因此我目前正在尝试学习

作为一个基本练习,我想将数组中包含的点绘制到一条数字线上,但不确定如何开始

我正在做以下事情来划定界限:

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

如果是整数数组,请确保避免整数除法

一维图是一个点。我想他想把点画在一条线上,比如说
————————————————————,除非你的意思和我不同,我用了你给的东西,稍微调整了一下,效果很好!非常感谢。我刚刚注意到,您似乎不知道“接受答案”按钮:)您也应该检查您之前的问题,并将对您帮助最大的问题标记为“接受答案!”:)(这是立柱侧面上下箭头下的复选框)