2017-08-28 3 views
1

J'essaie de dessiner un ovale avec une boucle for en itérant une liste de coordonnées contenant chacune une valeur x et une valeur y. Actuellement, il ne semble rien tirer après le lancement du programme. Il dessine la première fois, mais quand j'essaye de dessiner quand le programme fonctionne, il ne semble pas dessiner.Création d'un dessin à l'aide de graphiques Java

Voici le code pour le dessin:

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(); 
} 

Si vous avez besoin de plus de détails, je me sers graphiques de la bibliothèque java.awt. Aussi, j'ai déjà fait ça par le passé, mais je ne sais pas pourquoi ça ne marche pas cette fois-ci.

+0

Pour une meilleure aide plus rapidement, postez un [MCVE] ou [Short, Self Contained, Example correct] (http://www.sscce.org/). –

Répondre

0

Cette partie est votre question:

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

Plus précisément x*100

Vous dessinez hors de l'écran. Nous pouvons le voir en le décomposant: Supposons que vous avez un point de x = 28.

permet de faire le calcul sur ce point:

Pour X = 28 vous aurez la calc suivante: (28 * 100) - (5 + 100) = 2695

Ce Le point X de 2695 semble très grand pour moi. Vous auriez besoin d'un écran 4K ou d'un écran ultrawide pour le voir.

La solution: Réfléchis pourquoi vous utilisez x*100, et de le réduire afin que le point correspond à l'écran. En outre, si vous avez un petit point y, alors il sera dans les négatifs (exemple: 15-5-300 = -290), et va probablement dessiner au-dessus de votre écran et hors de vue.