2017-08-28 146 views
1

我想用绘制一个椭圆for循环,每个包含x值和y坐标值的列表进行迭代。目前,我开始程序后似乎没有绘制任何东西。它汲取了第一次,但是当我尝试绘制程序运行时,它似乎并不在其中进行绘制。问题绘图使用图形的Java

这里是绘制代码:

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中的库图形。另外,我过去也是这样做的,但我不知道为什么这次不工作。

+0

为了更好地帮助越早,张贴[MCVE]或[简要,独立的,正确的示例](http://www.sscce.org/)。 –

回答

0

这部分是你的问题:

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

具体x*100

您抽出屏幕。我们可以通过它分解看到这一点: 让我们假设你有X = 28点。

让我们做的是数学:

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

那X点2695对我来说看起来很大。您需要4k屏幕或超宽屏幕才能看到它。

解决办法: 有一个思考,为什么你正在使用x*100,并减少它,使该点在屏幕上适合。另外,如果你有一个小y点,那么这将是在底片(例如:15-5-300 = -290),并可能绘制上方您的屏幕,淡出人们的视线。