How can I draw on JPanel using another quadrant for the coordinates?

Posted by Sanoj on Stack Overflow See other posts from Stack Overflow or by Sanoj
Published on 2010-04-01T20:54:38Z Indexed on 2010/04/01 21:23 UTC
Read the original article Hit count: 360

I would like to draw some shapes on a JPanel by overriding paintComponent. I would like to be able to pan and zoom. Panning and zooming is easy to do with AffineTransform and the setTransform method on the Graphics2D object. After doing that I can easyli draw the shapes with g2.draw(myShape) The shapes are defined with the "world coordinates" so it works fine when panning and I have to translate them to the canvas/JPanel coordinates before drawing.

Now I would like to change the quadrant of the coordinates. From the 4th quadrant that JPanel and computer often uses to the 1st quadrant that the users are most familiar with. The X is the same but the Y-axe should increase upwards instead of downwards. It is easy to redefine origo by new Point(origo.x, -origo.y);

But How can I draw the shapes in this quadrant? I would like to keep the coordinates of the shapes (defined in the world coordinates) rather than have them in the canvas coordinates. So I need to transform them in some way, or transform the Graphics2D object, and I would like to do it efficiently. Can I do this with AffineTransform too?

© Stack Overflow or respective owner

Related posts about java

Related posts about java-2d

  • java 2D and swing

    as seen on Stack Overflow - Search for 'Stack Overflow'
    Hi, I have trouble understanding a fundamental concept in Java 2D. To give a specific example: One can customize a swing component via implementing it's own version of the method paintComponent(Graphics g) Graphics is available to the body of the method. Question: What is exactly this Graphics… >>> More

  • Java 2D Drawing Framework

    as seen on Stack Overflow - Search for 'Stack Overflow'
    Currently, I am using JHotDraw https://sourceforge.net/projects/jhotdraw/ as Figures Drawing Framework in my application. JHotDraw is a two-dimensional graphics framework for structured drawing editors that is written in Java. It is based on Erich Gamma's JHotDraw, which is copyright 1996… >>> More

  • Java 2D Resize

    as seen on Stack Overflow - Search for 'Stack Overflow'
    I have some old Java 2D code I want to reuse, but was wondering, is this the best way to get the highest quality images? public static BufferedImage getScaled(BufferedImage imgSrc, Dimension dim) { // This code ensures that all the pixels in the image are loaded. Image scaled = imgSrc.getScaledInstance( dim… >>> More

  • Java 2D Game Frameworks

    as seen on Stack Overflow - Search for 'Stack Overflow'
    I have been looking at frameworks for writing 2D games in Java - part of a growing desire to rediscover my roots in writing those simple but addictive video games. I have googled and found some possibilities, but it's hard to judge which is best without investing significant time in each. Does anyone… >>> More

  • Java 2D turn-based game programming: handle 2 mouse clicks per player

    as seen on Stack Overflow - Search for 'Stack Overflow'
    So suppose I'm developing a chess-like program using Java's Swing. I added a MouseListener to handle user input. To make a move the user must click a valid piece and then click a valid place. What's the best way to track the 2 mouse clicks in a turn? I'm thinking in use some kind of variable to record… >>> More