Nicholas
Nicholas

Reputation: 679

Properly scale image's location Java

I have a picture that details what I want to achieve for all values of Game.height. Problem is my mathematical expression in the variable circle_dy seems to be incorrect when it comes to scale the image's location for all values of Game.height.

IMG

 // images of the game
        private Image circle;
    // ball's spawning location 
        private int circle_dx = 0;
        private int circle_dy = (Game.height/2) + 30 ;

    public class GameBoard{ 

    public GameBoard(){

            // construct an ImageIcon specified by the given string directory
        ImageIcon circle = new ImageIcon("src/pics/circle.png");
        // get image type of the ImageIcon and assign it into the image instance                                                  //variable
        this.circle = circle.getImage();


        setBackground(Color.black);


    }

    // appropriate method to paint is paintComponent
        public void paintComponent(Graphics g){
            // if you are overriding a method call the super class paintComponent method
            // because you are creating your own version of the paintComponent method
            super.paintComponent(g);

            // draw the image itself at a particular location on the JPanel


            g.drawImage(this.circle,circle_dx,circle_dy,this);
            }
   }






public class Game extends JFrame{

        public static final int width = 600;
        public static final int height = 200;

    public Game(){
    // add the JPanel to the jframe
    add(new GameBoard());
    setVisible(true);
    // set the size of the jframe
    setSize(width,height);
    }

}

Upvotes: 0

Views: 150

Answers (1)

Mark
Mark

Reputation: 2473

As a suggestion:

Write a listener for windows resize that will update the size of your ball.

To calculate the required size changes, grab the x and y sizes of your window (would suggest saving them each time listener finishes). Work out the old and new values as a % then scale your ball by the same %.

For reference: http://docs.oracle.com/javase/tutorial/uiswing/events/componentlistener.html

Upvotes: 1

Related Questions