Java AWT Graphics2D transform translate
import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.Stroke; import java.awt.geom.Line2D; import java.awt.geom.Point2D; import java.util.Random; import javax.swing.JFrame; import javax.swing.JPanel; public class Main extends JPanel { Random rnd = new Random(); @Override//from w w w. j a v a2 s . com public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.setBackground(Color.WHITE); g2d.clearRect(0, 0, getParent().getWidth(), getParent().getHeight()); // antialising g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // Blue line g2d.setPaint(Color.BLUE); Stroke solidStroke = new BasicStroke(10, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); g2d.setStroke(solidStroke); g2d.draw(new Line2D.Float(new Point2D.Float(200, 10), new Point2D.Double(10, 210))); g2d.translate(100, 100); g2d.draw(new Line2D.Float(new Point2D.Float(200, 10), new Point2D.Double(10, 210))); } public static void main(String[] args) { // create frame for Main JFrame frame = new JFrame("java2s.com"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Main Main = new Main(); frame.add(Main); frame.setSize(300, 210); frame.setVisible(true); } }
import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.GeneralPath; import java.security.SecureRandom; import javax.swing.JFrame; import javax.swing.JPanel; public class Main extends JPanel { @Override/*from ww w . ja va2s .c o m*/ public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; // cast g to Graphics2D int[] xPoints = { 55, 67, 109, 73, 83, 55, 27, 37, 1, 43 }; int[] yPoints = { 0, 36, 36, 54, 96, 72, 96, 54, 36, 36 }; GeneralPath star = new GeneralPath(); // create GeneralPath object // set the initial coordinate of the General Path star.moveTo(xPoints[0], yPoints[0]); // create the star--this does not draw the star for (int count = 1; count < xPoints.length; count++) star.lineTo(xPoints[count], yPoints[count]); star.closePath(); // close the shape g2d.translate(150, 150); // translate the origin to (150, 150) // rotate around origin and draw stars in random colors SecureRandom random = new SecureRandom(); for (int count = 1; count <= 20; count++) { g2d.rotate(Math.PI / 10.0); // rotate coordinate system // set random drawing color g2d.setColor(new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256))); g2d.fill(star); // draw filled star } } public static void main(String[] args) { JFrame frame = new JFrame("Drawing 2D shapes"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Main Main = new Main(); frame.add(Main); frame.setSize(425, 200); frame.setVisible(true); } }