使用图形Java发布绘图

时间:2017-08-28 22:11:36

标签: java graphics awt

我正在尝试使用for循环绘制一个Oval,迭代遍历每个包含x值和y值的坐标列表。目前,我启动程序后似乎没有绘制任何内容。它是第一次绘制,但是当我在程序运行时尝试绘图时,它似乎没有绘制。

以下是绘图代码:

private void render(){
    bs = display.getCanvas().getBufferStrategy();
    if(bs == null){
        display.getCanvas().createBufferStrategy(3);
        return;
    }
    g = bs.getDrawGraphics();
    //Draw Here!

    DrawGrid(g);
    g.fillOval(100, 100, 10, 10);//this seems to draw
    for(int i = 0; i < points.size();i++){//this doesn't draw....
        System.out.println(points.get(i));
        g.drawString(points.get(i).toString(), points.get(i).x*100-5+100, points.get(i).y-5-300);
        g.fillOval(points.get(i).x*100-5+100, points.get(i).y-5-300, 10, 10);
    }
    //End Drawing!
    bs.show();
    g.dispose();
}

如果您需要更多细节,我正在使用java.awt库中的图形。另外,我过去已经这样做了,但我不知道为什么这次不工作。

1 个答案:

答案 0 :(得分:0)

这部分是您的问题:

points.get(i).x*100-5+100

具体为x*100

你正在抽离画面。我们可以通过分解来看到这一点: 让我们假设您有一个x = 28的点。

让我们对此进行数学计算:

  

对于X = 28,您将获得以下计算:(28 * 100) - (5 + 100)= 2695

2695的X点对我来说非常大。您需要一个4k屏幕或超宽屏幕才能看到它。

解决方案: 考虑一下您使用x*100的原因,并减少它以使该点适合您的屏幕。此外,如果你有一个小的y点,那么它将是负数(例如:15-5-300 = -290),并且可能会在屏幕上方绘制并且看不到。