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